关于DDD工厂的一些令人困惑的事情

use*_*291 12 domain-driven-design

a)我有点疑惑,在大多数情况下,我们是否应该只有一个生产整个Aggregate的工厂,还是我们还应该有一个仅创建Aggregate root的工厂?

b)如果一个工厂,构建整个集合构建两个非根单独的对象,还是应该委托建设非根实体/虚拟组织给其他工厂?

因此,如果Aggregate包含5种不同类型的非根实体,那么Aggregate factory应该自己创建这些非root实体,还是应该有另外5个工厂(每个非root实体有一个工厂),Aggregate工厂将委托给它们创建特定类型的非根实体

谢谢

Met*_*ght 7

在埃里克埃文斯的DDD书中,第138页,它是用粗体写的:

将整个聚合创建为一个片段,强制执行其不变量.

然后在下一页:

FACTORY应该只能生成一致状态的对象.对于ENTITY,这意味着创建整个AGGREGATE [...]

具体而言,这意味着您只需要一个工厂来创建整个聚合.有可能是参与构建非根实体或值对象的其他类(工厂),但只有一个工厂负责创建的集合.此工厂创建完整聚合,而不仅仅是根对象.