首页 > 代码库 > 聚合的划分(二)---再次总结
聚合的划分(二)---再次总结
聚合划分原则:
- 有很多个实体、值对象表现了一个完整的概念,他们之间是有很强关联的。
- 找最小的业务场景
- 找出聚合根(先确定可能是聚合根的实体,可能包含的实体),确定的原则是:具有独立的生命周期
- 确定聚合根的边界,如包括 Entity1,E2,E3.。。。这些实体要依赖于聚合根的存在而存在。聚合边界确定法则:根据不变性约束规则(Invariant),有两类:1)聚合边界内必须具有哪些信息,如果没有这些信息就不能称为一个有效的聚合;2)聚合内的某些对象的状态必须满足某个业务规则;
- 对象间是有规则的(如余额不为0,名称不能空,某实体不能0个),而且能影响到对方。
- 对象都有相同的生命周期。
- 对象太多,如超过了8-10个,不行,不能太大。性能不好了。如不知道该放还是不放,不明确的时候就不放一起。
反向验证:
- 验证一个实体是否属于这个聚合:他还可以属于其他聚合吗?离开了这个聚合根是不是就失去了意义。
- 实体变化了,影响聚合根的内容了吗?
再次验证:
- 是否“同生死,共存亡”,没有了这个实体,是否这个聚合或者是业务规则就不完整了;
聚合根的特征:(怎样找到聚合根)
- 可以独立存在
- 有独立的生命周期(生命开始和结束)。
- 其他实体或对象依赖它而存在
- 具有全局的唯一标识
- 除了唯一标识外,其他的所有属性都是可变的。
值对象的特征:
- 只读的
- 没有唯一标识,不存在这个值对象或那个值对象的说法;
- 没有生命周期,因为只是一个值。
实体的特征:
- 只有在聚合内部有唯一的本地标识
- 所有属性都是可变的。
- 实体的生命周期从属于聚合根,由聚合根维护
根的引用规则:
- 根到根:通过ID关联
- 根到内部实体:直接对象应用
- 根到值对象:直接对象引用
实体的引用规则:
- 可以直接引用聚合内的根、实体、值对象
- 能引用外部根,但要以ID的方式关联,如果要关联其他聚合的实体,则要先聚合根ID再到实体的原则
值对象的引用规则:
- 只需确保值对象是只读的即可
- 推荐值对象的所有属性都尽量是值对象;
聚合的划分(二)---再次总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。