2011-08-16 8 views
2

Roots、BonusProgram、およびAdvertiserの2つのAggrgateがあります。今度は広告主が一度に1つのボーナスプログラムしか持てないというルールです。今、広告主にbonusProgramを割り当てるには、どうすればいいですか?広告主にこのようなメソッドがありますか?ドメイン内のドメインサービスまたはメソッド

public virtual void AssignBonusProgram(BonusProgram bonusProgram) 
    { 
     this.bonusProgram = bonusProgram; 
    } 

かは、私は、ドメインサービスを作成し、この場合、やり過ぎでしょう

public void SubscribeToBonusProgram(BonusProgram bonusProgram, Advertiser advertiser) 
    { 

    } 

答えて

4

サービスでは、このようなメソッドを持っています。あなたのビジネスルールは、あなたのbonusProgramであり、コレクションではないことによって既にキャプチャされています。

...ルールは、広告主が 一度つだけのボーナスプログラムを持つことができます。

あなたの実装では、広告主に関連するボーナスプログラムがない可能性があることがわかります。これが当てはまらない場合は、nullをチェックしてArgumentNullExceptionをスローするだけです。ドメインサービスは非常に頻繁に悪用されるので、最初にエンティティまたは値型のいずれかにロジックを入れることをお勧めします。論理が概念的にどのエンティティにも属していない場合は、domain serviceを使用してください。

関連する問題