DDD之经典书推荐

1,136 阅读4分钟

1.DDD 的“老三篇”

1.1 《领域驱动设计——软件核心复杂性应对之道》

Eric Evans 的《领域驱动设计》是奠基之作,书中提出了 DDD 的概念,说明了这种方法的基本原理和主要内容。

这本书难懂的主要原因是缺乏面向对象方法学的基础。

可以把前面几章先读个大概,把不知所云的部分标记出来,然后补一下面向对象方法学的基础,再回过头来读原书,说不定就能够茅塞顿开了。

本书难懂的另外原因: 一是这本书有一定深度,需要有一定的开发经验,并且有一定思考,才能产生共鸣; 另一个是翻译问题,我们后面再聊怎么克服。

本书比较大的问题是没有把“领域建模”和“模型的实现”两者的边界区分清楚。 前者应该只包含业务概念,后者则要进一步包含技术概念。比如,作者讲值对象的时候,说值对象的特点是“不用区分哪个是哪个”。这种说法其实是从实现的角度来说的,而不是从业务概念的角度。

建议:在读书和实践时,要不断问自己一个问题:哪些是纯粹的业务概念,哪些是领域专家不关心的技术概念。

1.1.1推荐几本关于面向对象基础的图书

《UML 和模式应用》以及《面向对象分析与设计》。 《面向对象分析与设计》是 Booch 大师的代表作,Booch 是面向对象方法学的奠基人之一,也是 UML 的三个发明者之一,在软件开发方法学上面具有开创性的成就。他的学术地位超过了前面说过的几本书的作者,包括 Eric Evans。本书获得了有“软件界奥斯卡”之称的 Jolt 大奖。读这本书,能帮你了解真正的大师是怎么想问题的。

1.2《实现领域驱动设计》和《领域驱动设计模式、原理与实践》

希望解决 DDD 落地难的问题,但把原书中的一些思想精华反而被抛弃了,因此显得深度不够。比如说对领域建模技能的深入探讨、模型的重构、大型结构等等。

建议:如果你还没读过它们,那么最好还是从《领域驱动设计》入手,在建立了比较正确的观念后,再有选择地参考另外两本。

2.领域建模进阶

在领域建模技术的深度和广度方面继续拓展,推荐有帮助的书。

2.1 《分析模式》

Martin Fowler 写的。 把《分析模式》和著名的《设计模式》对照一下。如果不学习设计模式,你是不知道复杂的面向对象设计里有这么多“道道”的。同样,《分析模式》则讲解了真正复杂的领域模型到底长什么样。所以读这本书可以使你向领域建模的深度方向拓展。 本书的重点是领域模型(书中称为概念模型),所以牵涉到了组织管理、合同管理、财务管理、金融产品等不同的业务领域知识。

2.2《对象模型——策略、模式与应用》

Coad 的《对象模型——策略、模式与应用》(后面简称《对象模型》)。Coad 在面向对象方法学的建树不亚于 UML 的三个作者。之前有些同学问到的四色建模,也来源于 Coad 的另一本书《Java Modeling in Color with UML》。

《对象模型》一书通过 5 个实例,讲解了 177 个建模策略和 31 种模式。

2.3《数据模型资源手册》

这是一套书,共 3 册,总结了大量不同业务领域的数据模型。

3.总结

一、基础: 《领域驱动设计——软件核心复杂性应对之道》

二、参考: 《面向对象分析与设计》 《实现领域驱动设计》 《领域驱动设计模式、原理与实践》

三、提升: 《分析模式》 《对象模型——策略、模式与应用》 《数据模型资源手册》


此文章为3月Day5学习笔记,内容来源于极客时间《手把手教你落地 DDD》