将域驱动设计应用于项目时,如何识别聚合根?
例如,在标准的电子商务网站中,您可能会说订单是一个,而用户是另一个。 但是,如果您的用户属于公司,该怎么办?这会使您的公司成为集合根吗?
我有兴趣听取人们制定聚合根的方法,以及如何识别选择不当的聚合根。
答案 0 :(得分:5)
识别聚合根的一种好方法是使用“删除”测试。在您的域中,如果删除根,则删除的内容是什么?这样,您就可以识别域对象所有权,这是Aggregates的特征。
此外,聚合创建一致性边界,因此您的根应该从对象图的其余部分“隐藏”聚合元素,并检查它们应保持的一致性和不变量。 Aggregate中的对象只引用根(不是彼此)。因此,如果您在域模型中发现类似的内容,则可能会建议您拥有聚合根。