域内的域服务或方法

时间:2011-08-16 19:24:13

标签: domain-driven-design

我有两个aggrgate Roots,BonusProgram和Advertiser。现在规则是广告客户一次只能有一个奖励计划。现在要将bonusProgram分配给广告商,我应该怎么做,我是否在广告商中使用这样的方法。

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

或者我是否创建域服务并在

中使用这样的方法
   public void SubscribeToBonusProgram(BonusProgram bonusProgram, Advertiser advertiser)
   {

   }

1 个答案:

答案 0 :(得分:4)

在这种情况下,服务将是一种过度杀伤力。您的bonusProgram 不是收藏这一事实已经捕获了您的商家规则。

  

...规则是广告客户可以拥有仅一个奖励计划   时间。

您的实施告诉我,广告客户可能没有相关的奖励计划。如果不是这种情况,您只需检查null并抛出ArgumentNullException。域服务经常被滥用,首先尝试将逻辑放在其中一个实体或值类型中可能是个好主意。如果逻辑在概念上不属于任何实体,则仅使用domain service