domain-driven-design - 域内的域服务或方法

标签 domain-driven-design

我有两个聚合根: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/

相关文章:

email - CQRS 和电子邮件通知

c# - 使用 EF Core 正确实现存储库模式

java - 为什么服务层和 dao 层总是有单一的实现接口(interface)?

.net - 当需要依赖项时,如何/在何处将业务逻辑放入 EF 实体?

events - 在 DDD 中,谁应该负责处理领域事件?

c# - `EqualOperator()` 和 `NotEqualOperator()` 方法如何在此 `ValueObject` 实现中工作(Microsoft 文档)?

php - 您是否将存储库注入(inject)域对象?

repository - DDD : Repositories are in-memory collections of objects?

json - 如何在DDD中组织Web服务访问?

domain-driven-design - 实体应该只包含修改状态的行为吗?