DDD-基础知识 领域模型:失血、贫血、充血 失血模型:基于数据库的领域设计方式其实就是典型的失血模型; 一般开发的时候,都是根据数据库和表一一对应的设计。
在上述标中,如果存在同时修改两个 表,那么一般会使用manager去控制。
贫血:人在查询地址的时候,在上述失血模式中,肯定会去调研addressDao.find(),在贫血中就不会了,贫血中在一个类Person中给另外一个类Address赋值。
充血:在上述贫血模式中,一个类操作了数据库,这样很不好。充血模式中使用了依赖注入。
一 实体 什么是实体:有业务生命周期,使用标识进行跟踪。
比如人是一个实体,人从出生到死亡,都在不断的变化中,人有自己的生命周期。但是每个人都是不一样的,每个人都是唯一的,这个唯一可以用身份证号码去区分,每个人的身份证号都是不一样的。 实体:1 应该有生命周期 2 具有唯一的标识
2 值对象 1.不可变的 2.将不同的相关属性组合成了一个概念整体 3.当度量和描述改变时,可以用另外一个值对象予以替换 4.可以和其他值对象进行相等性比较 5.不会对协作对象造成副作用
值对象是不可变的,比如人有家,家的地址A是不会变化的。 当然有人说搬家了怎么办呢,搬家了就换一个地址B,但是他以前的家A还是在原来的A这个地址。
3 聚合 聚合是领域对象的显式分组,旨在支持领域模型的行为和不变性,同时充当一致性和事务性边界。
基于业务用例而非现实生活建立必要的关联 减少不必要的关联 将双向的关联转换为单向关联