我的程序开始变得非常大。我发现它开始在多个领域做同样的事情。 我试图找出如何使其更有效率。
所以我有一个看起来像这样的对象
public class TreeViewNode
{
public TreeViewNode()
{
Children = new ObservableCollection<TreeViewNode>();
}
public String Name { get; set; }
public string Description { get; set; }
public ObservableCollection<TreeViewNode> Children { get; set; }
}
我还有另一个看起来像这样的对象;
public class ComputerObject
{
public String Name { get; set; }
public Int32 UUID { get; set; }
public DateTime Created { get; set; }
public ObservableCollection<Object> Children { get; set; }
}
这两个项目都需要具有一些相同的属性.. 目前他们都有儿童财产和姓名财产。但他们都需要添加一些其他常见属性。
所以我尝试过这样的事情。
public class BaseObject
{
public String Name { get; set; }
public ObservableCollection<Object> Children { get; set; }
public string Description { get; set; }
public BaseObject()
{
Children = new ObservableCollection<object>();
}
}
public class ComputerObject: BaseObject
{
public Int32 UUID { get; set; }
public DateTime Created { get; set; }
}
public class TreeViewNode: BaseObject
{
public String IconPath { get; set; }
}
现在这只是我正在实现的内容的缩减版本,我有很多共享相同属性的对象。还有一些不混和搭配。我无法弄清楚最好的建议。
我的对象变得非常混乱,当我重命名一个属性时,我发现我必须在几个区域重命名它,这不是它的方式。
有人可以建议我如何实现共享相同属性名称的多个对象吗?
答案 0 :(得分:0)
我会研究装饰模式。简而言之,您不通过继承共享公共属性。您创建包含公共属性的类,并将这些类用作最终类中的属性。
编辑:示例实际上只是一个标准的组合,它应该可以工作
E.G。
public class Decorator1
{
public String Name { get; set; }
public ObservableCollection<Object> Children { get; set; }
public string Description { get; set; }
}
public class Decorator2
{
public long Id { get; set; }
}
public class ClassA
{
public Decorator1 TreeNodeImpl;
}
public class ClassB
{
public Decorator1 TreeNodeImpl;
public Decorator2 LongIdImpl;
}
答案 1 :(得分:0)
在我看来,当这些子类彼此不相关时(例如@Sriram Sakthivel要求Animal&lt; Dog,Cat)只是为了共享相同的属性,你不应该让类从一个基类继承。
你应该确定哪些类是相关的(猫,狗是动物;汽车,摩托车是车辆),然后根据这些“分组”创建基类。