エンティティの組織階層構造をモデル化する必要があります。組織は、本社、地域ヘッド、サブ地域、エリア オフィスのいずれかです。組織が実行している一般的な機能はたくさんありますが、特定の機能がいくつかあります。たとえば、地域だけがタスク A を実行できます。地域に固有のプロパティ (データ) もあります。
継承を使用せずに構成を使用してモデル化しましたが、組織のタイプに応じて有効な参照を持つかnullになる可能性のある多くの参照を持つ、単一の組織クラスだけで終了しました。
オブジェクトの構成は苦痛でしたが、現在は工場で処理しています。しかし今、私の主な関心事は、開発者が組織の種類とは何か、およびプロパティがその組織にとって何らかの意味を持っているかどうかを覚えておく必要があるということです。
私が言いたいことを明確にするために。
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){...}
...
}
ここで継承を使用する必要がありましたか? それとも、ここでいくつかのトリックが欠けていますか?