《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 章标题略有不同,或把"上下文映射"拆成两章;核心内容一致,表中给出常见组合。
设计一个新系统,最常用的几章
-
Part II 全部(5-11章)------战术设计
- 决定代码级建模方式:实体、值对象、聚合、仓储、工厂、领域服务与模块。
- 直接影响类图、事务边界、数据库表设计及接口风格。
-
Part IV 关键章节(15-17章)------战略设计
- 界限上下文、上下文映射:确定微服务/模块切分,以及系统之间的集成关系。
- 精炼:帮助你把精力投入"核心域",把通用或支撑功能外包/购置/采用第三方。
- 大规模结构:给跨团队协作提供统一"地图"。
-
Part I 第 2、4 章
- 统一语言和分层架构是落地战术模式的前提。
-
Part III 第 13 章
- 在演进过程中持续重构模型,避免设计腐化。
实际落地顺序建议
- 业务梳理:阅读 1-2 章,建立统一语言。
- 定界与拆分:深入 15-17 章,画出上下文图、确定核心域。
- 领域建模:使用 5-11 章模式,把每个上下文内部模型具体化。
- 架构承载:结合 4 章的分层原则,把领域层与接口/基础设施解耦。
- 持续迭代:参考 12-14 章,随着认知加深不断调整上下文与模型。
Pomelo_刘金这样既覆盖了战略("做什么"及"大块怎么分")也覆盖战术("类、对象、事务怎么设计")。如果时间有限,先精读 5-11 章 + 15-17 章,其余可按需查阅。