Skip to content

Day 28 - 聚合边界设计实践

📖 今日目标

  1. 理解聚合边界的重要性
  2. 掌握边界划分的方法
  3. 通过案例练习设计聚合

核心概念

聚合边界

聚合边界决定了:

  • 事务范围
  • 一致性边界
  • 对象引用方式

关键要点

1. 边界划分原则

事务边界原则

  • 一次业务操作修改一个聚合
  • 聚合内保持强一致性
  • 聚合间保持最终一致性

设计检查清单

  1. 这些对象是否必须一起修改?
  2. 这个业务规则是否跨越多个对象?
  3. 修改这个对象是否需要修改其他对象?

2. 案例练习

场景:电商退货

问题:Order和ReturnRequest是否在一个聚合?

分析:

  • Order可以独立存在
  • ReturnRequest需要关联Order
  • 但两者不需要同时修改

结论:

  • Order是一个聚合
  • ReturnRequest是另一个聚合
  • 通过OrderId关联

3. 常见问题

聚合过大

  • 包含太多子对象
  • 导致并发冲突

聚合过小

  • 对象间强关联被拆散
  • 增加跨聚合事务

面试考点

问题:如何判断聚合边界是否合理?

答案:

  1. 事务测试:这些对象是否需要在一个事务中修改?
  2. 不变性测试:业务规则是否要求这些对象同时保持一致?
  3. 独立性测试:这个对象能否独立于其他对象存在?
  4. 并发测试:这个聚合的并发更新频率如何?

好的聚合边界

  • 业务上内聚
  • 可以独立持久化
  • 边界清晰,易于维护

实践思考

🎯 思考题

设计用户和地址的关系:

  1. 用户可以有多个地址
  2. 下单时选择收货地址
  3. 地址需要支持默认地址

User和Address应该在同一个聚合吗?为什么?


📅 学习进度

Day主题状态
01-27实战练习
28聚合边界设计实践
29遗留系统迁移策略
30复习与总结

本文为DDD 30天学习计划第28天内容

📚 导航

| ← Day 27 - 上一章 | Day 29 - 下一章 →

最后更新: