0

我的应用程序中有以下类结构(为了时间而缩写,名称已更改)。当我编写代码时,我觉得 Action1 和 Action2 之间的相似之处应该保证某种概括。我已经提供了带有相关部分的 UML 类图(接口除外,我在下面的代码中进行了描述)。我想知道是否有人对如何制作这种“更好”的架构/类设计有想法。此外,非常相似的动作可以在近期的迭代中实现。

UML 图 http://img16.imageshack.us/img16/2569/mainmm2.jpg

接口代码

public IActor1
{
    public Property1 { get; set; }
    public Property2 { get; set; }
}

public IActor2
{
    public Property3 { get; set; }
    public Property2 { get; set; }
}
4

2 回答 2

0

我第一次看到这个想出了以下内容:

重载接口,因为两者都已经实现了接口。然后,创建了一个 Action 接口,封装了 Action1 的 List、List 和 ActionType 属性,让 Action2 有一个空的虚拟 ActionType 属性。但是,这似乎非常混乱且不可扩展(因为未来有新动作的计划)

于 2009-02-16T23:09:30.590 回答
0

我不确定这是否能回答你的问题,但这里有。

首先,IActor1 和 IActor2 应该有一个具有共享属性的公共基础接口:

public interface IActorBase {
    public Property2 { get; set; }
}

现在,动作应该有一个通用的基础

public abstract class ActionBase<TActor> where TActor: IActorBase {
    public List<String> StringList { get; set; }
    public List<TActor> ActorList  { get; set; }
}

然后,您可以这样实现 Action1 和 Action2:

public class Action2 : ActionBase<IActor2> { }

public class Action1 : ActionBase<IActor1> {
    public enum Action1Type Type { get; set; }
}

如果没有更多细节,我不确定你还能在这里做什么......

于 2009-02-17T01:21:24.673 回答