白话 DDD :聚合的本质是什么?

9 阅读1分钟

前言

DDD 之所以很难推广,核心无外乎就是开发人员对 DDD 的各项概念理解不准确不深入。一个理论无论多么牛逼,核心还是要人来实现,人是核心要素。

聚合基本特征

聚合应该是 DDD 里面较为难懂的概念之一了。看下聚合的特征:

  • 聚合是数据一致性的边界
  • 聚合必须含有且只有一个聚合根,且聚合根必须是一个实体
  • 聚合是将具有业务关系的实体、值对象组合在一起,通过聚合的业务规则,对内部实体、值对象进行作用。

聚合本质是什么?

通过上面的几个特征,其实最重要的就是两个字:关系。

所以,聚合的本质是“关系”的承载容器。 聚合根就是这个关系的持有者和发起点,而内部的其他的对象,就是被作用者。

进一步引申:聚合只适合建立 1:N 的业务关系,1 就是聚合根。 而持有者作为发起点,那么必然能够修改内部其他领域模型,因此聚合一定就是数据一致性的边界。这里的一致性,是强一致性。

这样看,聚合是否就很清晰了呢?

很多说法,比如一个聚合应不应该用一个仓储,这都是伪命题,典型的技术实现和理论概念搅和在一起了。