Appearance
Day 28 - 聚合边界设计实践
📖 今日目标
- 理解聚合边界的重要性
- 掌握边界划分的方法
- 通过案例练习设计聚合
核心概念
聚合边界
聚合边界决定了:
- 事务范围
- 一致性边界
- 对象引用方式
关键要点
1. 边界划分原则
事务边界原则:
- 一次业务操作修改一个聚合
- 聚合内保持强一致性
- 聚合间保持最终一致性
设计检查清单:
- 这些对象是否必须一起修改?
- 这个业务规则是否跨越多个对象?
- 修改这个对象是否需要修改其他对象?
2. 案例练习
场景:电商退货
问题:Order和ReturnRequest是否在一个聚合?
分析:
- Order可以独立存在
- ReturnRequest需要关联Order
- 但两者不需要同时修改
结论:
- Order是一个聚合
- ReturnRequest是另一个聚合
- 通过OrderId关联
3. 常见问题
聚合过大:
- 包含太多子对象
- 导致并发冲突
聚合过小:
- 对象间强关联被拆散
- 增加跨聚合事务
面试考点
问题:如何判断聚合边界是否合理?
答案:
- 事务测试:这些对象是否需要在一个事务中修改?
- 不变性测试:业务规则是否要求这些对象同时保持一致?
- 独立性测试:这个对象能否独立于其他对象存在?
- 并发测试:这个聚合的并发更新频率如何?
好的聚合边界:
- 业务上内聚
- 可以独立持久化
- 边界清晰,易于维护
实践思考
🎯 思考题:
设计用户和地址的关系:
- 用户可以有多个地址
- 下单时选择收货地址
- 地址需要支持默认地址
User和Address应该在同一个聚合吗?为什么?
📅 学习进度
| Day | 主题 | 状态 |
|---|---|---|
| 01-27 | 实战练习 | ✅ |
| 28 | 聚合边界设计实践 | ✅ |
| 29 | 遗留系统迁移策略 | ⬜ |
| 30 | 复习与总结 | ⬜ |
