背景
每个对象都有生命周期,对象自创建后,可能会经历各种不同的状态,直至最终消亡——要么存档要么删除。
主要挑战有以下两类:
(1)在整个生命周期中,维护完整性。
(2)防止模型陷入管理生命周期复杂性造成的困境当中。
解决之道:
聚合(Aggregate),工厂(Factory),存储(Repository),使用工厂来创建复杂对象和聚合,封装内部结构,在生命周期末尾使用存储。
6.1 模式:AGGREGATE
问题:
假设删除一个Person,姓名,工作删除,那么地址是否删除?
是:其他引用如何处理
否:产生垃圾数据
问题抽象:
1. 对象模型中的关系网很难断定一个修改会产生哪些潜在影响。
2. 复杂管理模型中,保证对象的更改一致性更困难,不仅互不关联的对象需要遵守规则,紧密相连的也需要遵守规则。干扰非常多。
3. 并发访问的系统中,问题将更加突出。
问题根源:缺乏明确定义的边界。
什么是聚合:
- Aggregate是一组相关的集合,我们把它作为数据修改的单元。
- 每个Aggregate 都有一个根和一个边界。
- 边界定义了Aggregate 内部都有什么。
- 根则是Aggregate所包含的一个特定entity。
- 相对聚合而