我需要在我的实体中对组织层次结构进行建模。一个组织可以是总部、区域负责人、子区域、区域办事处。组织正在执行许多通用功能,但有几个特定的功能,例如只有区域可以执行任务 A。还有一些特定于区域的属性(数据)。
我使用组合而不使用继承对其进行建模,但现在我只以一个组织类结束,其中有很多引用,这些引用取决于组织的类型,可以有有效的引用,也可以为空。
对象组合是一种痛苦,现在我正在通过工厂处理。但现在我主要关心的是开发人员需要记住组织类型是什么以及属性是否对该组织有意义。
只是为了清楚我的意思。
public class Organization : IKeyed<int> {
public virtual int Id { get; protected set; }
public virtual string Code { get; set; }
public virtual OrganizationType orgType {get;set;}
public virtual Organization Parent {get;set;}
public virtual IList<Organization> Children {get;set;}
public virtual typeA {get; set;} // only meaningful when organization type is 'Head office'
public virtual typeB {get;set;}// only meaningful when 'Region'
public virtual void AddChild(Organization org){...}
...
}
我应该在这里使用继承吗?还是我在这里错过了一些技巧?