DDD 领域驱动设计 阅读前导

340 阅读4分钟

《Domain-Driven Design: Tackling Complexity in the Heart of Software》

(Eric Evans,中文常译《领域驱动设计》“蓝皮书”)
全书分四大部分 17 章(再加序言、附录与参考文献)。下表给出每章的主题要点——章节顺序偶有不同译本用词差异,但核心内容一致。

#章名(直译)位置关键要点
1压缩领域知识 (Crunching Knowledge)Part I与领域专家一起挖掘知识,形成最初的模型草图。
2语言与沟通 (Communication and the Use of Language)Part I统一语言 (Ubiquitous Language):模型概念直接出现在代码、对话与文档中。
3将模型与实现绑定 (Binding Model and Implementation)Part I代码即模型:保持模型-代码同步,用测试驱动、重构保护一致性。
4分层架构 (Layered Architecture)Part I经典四层:用户接口/UI、应用、领域、基础设施;强调领域层纯净。
5实体 (Entities)Part II用身份标识的不变对象;生命周期跨多个状态。
6值对象 (Value Objects)Part II无身份、不可变、通过属性取值判等,用来描述事物特征。
7领域服务 (Services)Part II不自然属于任何对象而又至关重要的操作;具备无状态、以动词命名等特征。
8模块/包 (Modules)Part II用显式命名的包隔离概念;避免巨型“杂物桶”。
9聚合 (Aggregates)Part II一致性边界 + 根实体;解决事务粒度与并发。
10工厂 (Factories)Part II复杂对象/聚合的创建职责下移;隐藏构造细节。
11仓储 (Repositories)Part II为聚合根提供类似内存集合的持久化接口;屏蔽数据源。
12模型驱动设计过程 (Model-Driven Design Process)Part III在快速迭代中让模型、代码与洞见不断互相促发。
13向更深层洞见的重构 (Refactoring Toward Deeper Insight)Part III通过重命名、拆分/合并概念,把“发现”落实到模型。
14维护模型完整性 (Maintaining Model Integrity)Part III保持一致边界、制定团队协作规则、处理并行开发。
15精炼 (Distillation)Part IV找出核心域、通用子域、支撑子域;聚焦业务差异化。
16大规模结构 (Large-Scale Structure)Part IV上位结构模式:分层、管道-过滤器、责任链、分区等。
17战略整合/上下文映射 (Strategic Integration & Context Mapping)Part IV界限上下文 (Bounded Context)、上下文映射模式:共享内核、发布语言、防腐层等。

有些译本把 14-17 章标题略有不同,或把“上下文映射”拆成两章;核心内容一致,表中给出常见组合。


设计一个新系统,最常用的几章

  1. Part II 全部(5-11章)——战术设计

    • 决定代码级建模方式:实体、值对象、聚合、仓储、工厂、领域服务与模块。
    • 直接影响类图、事务边界、数据库表设计及接口风格。
  2. Part IV 关键章节(15-17章)——战略设计

    • 界限上下文、上下文映射:确定微服务/模块切分,以及系统之间的集成关系。
    • 精炼:帮助你把精力投入“核心域”,把通用或支撑功能外包/购置/采用第三方。
    • 大规模结构:给跨团队协作提供统一“地图”。
  3. Part I 第 2、4 章

    • 统一语言和分层架构是落地战术模式的前提。
  4. Part III 第 13 章

    • 在演进过程中持续重构模型,避免设计腐化。

实际落地顺序建议

  1. 业务梳理:阅读 1-2 章,建立统一语言。
  2. 定界与拆分:深入 15-17 章,画出上下文图、确定核心域。
  3. 领域建模:使用 5-11 章模式,把每个上下文内部模型具体化。
  4. 架构承载:结合 4 章的分层原则,把领域层与接口/基础设施解耦。
  5. 持续迭代:参考 12-14 章,随着认知加深不断调整上下文与模型。

Pomelo_刘金这样既覆盖了战略(“做什么”及“大块怎么分”)也覆盖战术(“类、对象、事务怎么设计”)。如果时间有限,先精读 5-11 章 + 15-17 章,其余可按需查阅。