复制聚合:为什么我们不应该复制聚合边界之外的对象?

时间:2013-01-21 16:10:23

标签: domain-driven-design

当应用程序想要基于现有的Aggregate创建新的Aggregate时,我们可以将现有Aggregate中的所有内容(内部实体的ID除外)复制到新的Aggregate中。但是如果某个内部对象引用了Aggregate边界之外的对象,我们就不允许复制引用的对象。

a)我知道Aggregates应该关注自己的业务而不是干扰其他Aggregate的生命周期,但如果我们还复制了Aggregate边界之外的对象,究竟会出现什么问题呢?

1 个答案:

答案 0 :(得分:2)

假设您有一个汇总Order,其中包含OrderLine个对象的集合,并且您希望根据现有的订单创建新订单,您只需复制订单及其关联订单行。即使订单行可能引用了Product,您也不会复制产品,因为它不属于汇总产品。

理想情况下,订单行甚至不应该引用产品实例,而只是保留产品ID。

正如eulerfx所提到的,复制背后的原因可能会提供更多见解:)