【问题标题】:Optimizing Class Structure优化类结构
【发布时间】:2009-02-16 23:05:30
【问题描述】:

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

UML Diagram 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; }
}

【问题讨论】:

    标签: c# class uml


    【解决方案1】:

    我第一次看到这个是这样的:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      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; }
      }
      

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

      【讨论】:

        猜你喜欢
        • 2010-12-28
        • 1970-01-01
        • 2018-07-24
        • 1970-01-01
        • 2021-09-22
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 2020-03-28
        相关资源
        最近更新 更多