| 聚合根 | 聚合适配的唯一入口,负责维护内部不变量 |
|---|---|
| 设计原则 | 聚合尽量小;跨聚合用 ID 引用而不是对象引用;一次事务只改一个聚合 |
| 一致性 | 聚合内强一致,聚合间最终一致 |
聚合不变量示例(伪代码)
聚合不变量示例(伪代码)
class Order { // 聚合根
addLine(sku, qty) {
require(status == 草稿) // 不变量一:仅草稿可改
require(lines.size < 100) // 不变量二:行数上限
}
submit() { require(lines 非空) }
}
// 跨聚合只存 ID 引用,不持有其他聚合对象把所有实体塞进一个大聚合会带来锁竞争与加载开销,聚合边界应按真正需要原子保证的不变量来划。