我有两个aggrgate Roots,BonusProgram和Advertiser。现在规则是广告客户一次只能有一个奖励计划。现在要将bonusProgram分配给广告商,我应该怎么做,我是否在广告商中使用这样的方法。
public virtual void AssignBonusProgram(BonusProgram bonusProgram)
{
this.bonusProgram = bonusProgram;
}
或者我是否创建域服务并在
中使用这样的方法 public void SubscribeToBonusProgram(BonusProgram bonusProgram, Advertiser advertiser)
{
}
答案 0 :(得分:4)
在这种情况下,服务将是一种过度杀伤力。您的bonusProgram
不是收藏这一事实已经捕获了您的商家规则。
...规则是广告客户可以拥有仅一个奖励计划 时间。
您的实施告诉我,广告客户可能没有相关的奖励计划。如果不是这种情况,您只需检查null并抛出ArgumentNullException。域服务经常被滥用,首先尝试将逻辑放在其中一个实体或值类型中可能是个好主意。如果逻辑在概念上不属于任何实体,则仅使用domain service。