Appearance
Day 23 - 聚合设计原则
📖 今日目标
- 理解聚合设计的核心原则
- 掌握聚合边界划分方法
- 学习聚合一致性维护
核心概念
聚合设计原则
聚合设计需要平衡:
- 一致性:聚合内对象保持一致
- 独立性:聚合可以独立修改
- 简单性:聚合足够小以降低复杂度
关键要点
1. 聚合设计规则
- 一致性边界:聚合内所有对象在同一事务中修改
- 最小化聚合:只包含必要对象
- 跨聚合引用:使用ID而非对象引用
- 聚合根控制:只通过聚合根访问
2. 聚合大小选择
| 场景 | 聚合大小 |
|---|---|
| 简单CRUD | 大聚合 |
| 复杂业务规则 | 小聚合 |
| 高并发 | 最小聚合 |
3. 设计示例
java
// Order聚合:只包含必要的OrderItem
public class Order extends AggregateRoot {
private List<OrderItem> items; // 必要的
// 跨聚合引用:使用ID而非对象
private CustomerId customerId; // 不是Customer对象
}面试考点
问题:聚合设计有哪些常见错误?
答案:
- 聚合过大:包含太多对象,导致并发冲突
- 跨聚合引用:直接引用其他聚合的实体
- 贫血聚合:聚合只是数据容器,无行为
- 设计混乱:没有明确的边界
正确做法:
- 保持聚合小而专注
- 聚合内强一致性,聚合间最终一致性
- 通过ID进行跨聚合引用
实践思考
🎯 思考题:
分析电商订单场景,设计Order和Shipment聚合的边界。
📅 学习进度
| Day | 主题 | 状态 |
|---|---|---|
| 01-22 | 战略设计 + 战术 + 架构 | ✅ |
| 23 | 聚合设计原则 | ✅ |
| 24 | 领域驱动与微服务 | ⬜ |
| ... | ... | ... |
| 30 | 复习与总结 | ⬜ |
