您使用什么方法来识别域驱动设计中的聚合根?

时间:2010-05-16 22:04:48

标签: domain-driven-design aggregate root

将域驱动设计应用于项目时,如何识别聚合根?

例如,在标准的电子商务网站中,您可能会说订单是一个,而用户是另一个。 但是,如果您的用户属于公司,该怎么办?这会使您的公司成为集合根吗?

我有兴趣听取人们制定聚合根的方法,以及如何识别选择不当的聚合根。

1 个答案:

答案 0 :(得分:5)

识别聚合根的一种好方法是使用“删除”测试。在您的域中,如果删除根,则删除的内容是什么?这样,您就可以识别域对象所有权,这是Aggregates的特征。

此外,聚合创建一致性边界,因此您的根应该从对象图的其余部分“隐藏”聚合元素,并检查它们应保持的一致性和不变量。 Aggregate中的对象只引用根(不是彼此)。因此,如果您在域模型中发现类似的内容,则可能会建议您拥有聚合根。