目录
一、领域层定义仓库接口
书接上回,之前通过一个关于拆解、微服务、面向对象的故事,向大家介绍了如何从微服务、面向对象一步步演进到DDD的,整个演进过程如下图:
其中在领域层,我们定义了富血模型的领域模型,包括聚合、聚合根、实体、值对象等。聚合
在代码层面中的表现形式即是一个包Package,起到了边界的作用,聚合内的对象间高内聚,而聚合间低耦合。聚合中放着实体、值对象、仓库
等,实体
相较于值对象
的一个典型区别就是实体存在唯一标识,并且可通过该唯一标识查询到该实体并对其进行相关操作,值对象
不存在唯一标识且通常作为实体
的伴生属性,但二者均采用信息专家模式
即包含丰富的业务操作(而不是贫血模型仅包含getter/setter)。在聚合
中选择一个实体
作为聚合根(入口类)
,对该聚合的访问均通过聚合根发起。在DDD中规定,一个聚合
对应一个仓库Repository
,即由聚合内的仓库