主要观点:
- 领域驱动设计(DDD)的本质在于战略基础,而非战术实现,很多项目因忽视战略而迷失方向。
- 战略 DDD 包括域和子域定义、通用语言、有界上下文及上下文映射四个支柱,可将 DDD 从模式集转变为协作语言。
- 战略 DDD 提供七种模式指导有界上下文间的协作,选择正确模式可确定上下文间的依赖关系。
- 很多团队在 DDD 中常犯将其视为技术配方的错误,而忽视战略部分,应重视战略 DDD 以交付更好软件。
关键信息:
战略 DDD 的四个支柱:
- 域和子域定义:将大域划分为核心、支持和通用子域,以明确价值所在。
- 通用语言:使术语对齐,建立共同理解,成为清晰讨论和准确建模的基础。
- 有界上下文:明确模型和语言适用的边界,帮助澄清代码中的术语含义。
- 上下文映射:可视化上下文间的关系,识别集成点等,防止团队间的不一致。
战略 DDD 的七种模式:
- 共享内核:两个团队共享部分模型,需强沟通和互信。
- 客户-供应商:下游依赖上游,可影响上游但上游控制模型。
- 顺应者:下游完全适应上游设计,常与防腐层结合。
- 防腐层:下游用此层翻译外部模型与自身模型,保护内部语言。
- 发布语言:多个团队同意的共享契约,用于数据交换。
- 独立方式:某些区域无需集成,各自独立发展。
- 开放主机服务:上游提供可扩展 API,下游系统可消费。
重要细节:
- 以金融系统中“合规”和“交易”上下文共享“客户身份”对象为例说明共享内核。
- 以电商平台中“订单管理”依赖“库存”说明客户-供应商关系。
- 以电商与支付网关集成说明顺应者模式。
- 以卡管理集成说明防腐层。
- 以电商生态中“订单管理”和“发货”团队的共享 JSON 模式说明发布语言。
- 以电商中核心与营销等的独立发展说明独立方式。
- 以金融科技生态中“支付服务”的开放主机 API 说明该模式。
结论:很多团队忽视战略 DDD,应重视,作者在新书《领域驱动设计与 Java》中深入探讨,该书详细介绍战略和战术设计的连接等内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。