【问题标题】:How to create a domain model for entity with children and parent如何为具有子级和父级的实体创建域模型
【发布时间】:2019-07-29 21:16:36
【问题描述】:

我正在尝试为包含子实体且可以有父实体的实体创建域模型(聚合)。 我们有实体包。 我们可以将包拆分成更小的包(子包)。 每个分割的包都有一个父包。 领域的哪一部分应该包含领域逻辑:聚合还是领域服务? 例如聚合包有一个方法

split(splitParams: ISplitParameters): Package {
   // Split logic based on splitParams here
   const child = new Package(params);
   child.parent = this;
   this.children.push(child);
   return child;
}

方法拆分应该返回子包还是原始包? 解决这个问题的正确方法是什么?

我希望我的域模型在 ddd 的其他部分(应用程序和基础架构)中是干净且幂等的

【问题讨论】:

    标签: typescript architecture domain-driven-design


    【解决方案1】:

    从您的示例看来,split 似乎是 Package 实体上的一个方法。因此,普遍存在的语言将包含指示 Package 可以“拆分”自身的语句。如果是这种情况,split 方法应该在 Package 聚合中。

    如果是工厂方法或类方法,我建议将其放在工厂中,而不是域服务中。仅当您处理两个或多个聚合或非常复杂的业务逻辑时才使用域服务。

    如果子包只能通过parent.children 访问,则返回原始包聚合是有意义的。您应该始终传递聚合对象,并通过聚合根访问子实体。

    【讨论】:

      猜你喜欢
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多