2012-03-25 16 views
2

2つのサービス/機能(「購入」と「レンタル」)にアクセスできるWebアプリケーションがあります。最初のステップでは、DropDownListからProductCategoryを選択する必要があります。すべての製品カテゴリを購入または賃貸することはできません。ドメインドリブンデザインルックアップテーブルを集約ルートとして使用

  • A::購入/賃貸
  • B:購入/賃貸
  • C:購入/賃貸
  • D:だけ
  • Eを購入:のみレンタル
私たちは、5つの製品のカテゴリを持っています

ドメインドリブンでどのように設計できますか?私のoppinionで購入/賃貸物件がProductCategoryのプロパティではありませんが、サービス自体の:

public class Service 
{ 
    public string Name; // Buy or Rent 
    public List<ProductType> AllowedTypes; 
} 

編集第2の例:

どちらのサービス(例えば、作成または終了)、いくつかの共有状態を持っていますが、特別ステータス(例えば、「Buy-Status-1」)。両方のサービスに同じステータスクラスを使用することをお勧めしますか?またはサービスごとの特別なクラスBuyStatus/RentStatus。

答えて

4

は、私はそれが対「/家賃を買う」「のみ購入/だけ借りる」の関係が静的または動的であるかどうかに依存すると思います。

この関係が静的であれば(すべてのために)、この情報を直接ProductCategoryに持たせるほうが簡単です。クラスが少ないほど良い。

一方、関係が動的である場合、そのような知識を維持する責任を負う別のオブジェクトを作成すると、動的状態を管理することが容易になります(例えば、 /レンタル ")。

これは、プロパティが単なる値であり、プロパティがより複雑になる(たとえば、それらが時間的に変化し、すべての変更に従わなければならない)場合、クラスを別々のクラスに移動するというoopルールに従います。

+0

この関係は修正されています。しかし、将来的には、追加販売サービスのようなサービスが増える可能性があります。 – LuckyStrike

+0

私の経験から、何かが固定されていると信じていると、私は間違っていることがほとんどです。 –

関連する問題