我有两个聚合根:BonusProgram 和 Advertiser。现在的规则是广告商一次只能有一个奖励计划。现在要将bonusProgram分配给广告商,我应该做什么,我在广告商中有这样的方法吗?
public virtual void AssignBonusProgram(BonusProgram bonusProgram)
{
this.bonusProgram = bonusProgram;
}
或者我是否创建域服务并在
中使用类似的方法 public void SubscribeToBonusProgram(BonusProgram bonusProgram, Advertiser advertiser)
{
}
最佳答案
在这种情况下,服务就显得有些过分了。您的业务规则已通过以下事实捕获:您的 bonusProgram
不是集合。
... the rule is an advertiser can have only single bonus program at a time.
您的实现告诉我,广告商可能没有关联的奖励计划。如果不是这种情况,您可以简单地检查 null 并抛出 ArgumentNullException。领域服务经常被滥用,首先尝试将逻辑放入其中一个实体或值类型中可能是个好主意。并且只使用domain service如果逻辑在概念上不属于任何实体。
关于domain-driven-design - 域内的域服务或方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083812/