我正在努力与聚合和聚合根.我有一个天然的聚合根,用于大约60%的用户请求.即这些请求自然地适用于聚合根.
在我的集合中,我有另一个实体,只能作为总根的成员存在.然而,用户将被告知有关该其他实体对象.有时在概念上有意义的是,用户可以直接在这个非聚合根对象上操作.
所以,我想我有几个选择:
>根据用户请求的操作,它们都可以是聚合根.
>所有操作必须通过顶层聚合根.
请注意,顶层聚合根将保存此另一实体的集合.
例:
主要聚集根:汽车
第二个实体:座位(一个汽车根据类型有2或4个座位).在我的域名位置只能作为汽车的一部分存在.
域中的大多数操作都在汽车级别.那么这将是一个很好的候选人.但是,(我正在努力争取这里的例子),一些操作将在座位上,例如SpillCoffee,ChangeFabric,Clean ….
座椅和汽车都可以作为根基?还是应该从汽车开始?
谢谢
聚合的思想是保证一致性,作为数据完整性和强制不变量的根源.
原文链接:https://www.f2er.com/javaschema/281782.html假设有一个规则,如“所有座位的面料必须一样”,或者“你只能在车内有人喝咖啡就坐在座位上”,一旦客户将被执行,这将更加难以实现能够单独更换织物,否则这些不变量将需要被强制外部(危险区域).
如果完整性或强制不变量不是一个问题,那么IMHO就不需要集合.但是,如果有必要,我的建议是用车开始一切.但总是想到模型.如果有这样的不变量,那么谁执行这些不变量?然后尝试将这个想法传递给代码,一切都应该是好的.