当前位置:  开发笔记 > 运维 > 正文

领域驱动设计 - 聚合根

如何解决《领域驱动设计-聚合根》经验,为你挑选了1个好方法。

我正在努力研究聚合和聚合根.我有一个自然聚合根,适用于大约60%的用户请求.即这些请求自然适用于聚合根.

在我的聚合中,我有另一个实体,它只能作为聚合根的成员存在.但是,用户将被告知这个其他实体对象.从概念上讲,用户有时可以直接对此非聚合根对象进行操作.

所以,我想我有几个选择:

    它们都可以是聚合根,具体取决于用户请求的操作.

    所有操作都必须通过顶级聚合根.

请注意,顶级聚合根将包含此其他实体的集合.


例:

主要集合根:汽车

第二个实体:座位(根据类型,汽车有2个或4个座位).在我的域名中,座位只能作为汽车的一部分存在.

域中的大多数操作都在Car级别.所以这将是聚合根的一个很好的候选者.然而,(我在这里努力争取示例),一些操作将在座位级别,例如SpillCoffee,ChangeFabric,Clean ....

座椅和汽车都可以是聚合根?或者我应该始终从汽车开始?

谢谢



1> Samuel Carri..:

聚合的想法是保证一致性,是负责数据完整性和强制不变量的根.

假设有一条规则,例如"所有座位的布料必须相同",或者"如果车内有人,你只能在座位上洒咖啡".一旦客户满意,执行这些将会更加困难.能够单独更换布料,或者需要将这些不变量强制到外面(危险区域).

恕我直言,如果完整性或强制不变量不是问题,那么实际上并不需要聚合.但是,如果有必要,我的建议是用汽车开始一切.但总是想到这个模型.如果有这样的不变量,那么谁强制执行这些不变量?然后尝试将这个想法传递给代码,一切都应该没问题.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有