作者简介
Vaughn Vernon是一个经验丰富的软件工匠,在软件设计、开发和架构方面拥有超过25年的从业经验。他提倡通过创新来简化软件的设计和实现。从20世纪80年代开始,他便开始使用面向对象语言进行编程。90年代初期,便在领域建模中应用了领域驱动设计。
作者的初衷很屌
本书中的绝大多数例子都是使用Java语言编写的。我本来可以使用C#的,但是我有意识地使用了JAVA。
首先,我认为Java社区正在抛弃好的软件设计和开发实践。xxxxxx, 所以我想鼓励Java社区重新回到领域建模中来。(此外,在.NET社区中已经有很好的DDD资源了,如Jimmy Nilsson的《领域驱动设计与模式实战》)
书籍概览
第一章:DDD入门
介绍DDD的好处,以及如何尽可能多的去实现DDD。在应对复杂的软件系统时,DDD可以为你的项目和团队带来什么。
第二章:领域、子域和限界上下文
介绍领域、子域和限界上下文是什么?我们为什么要用它们,如何使用。
第三章:上下文映射图
上下文映射图帮助我们理解业务领域、模型间的边界,一级这些模型之间的集成方式。
第四章:架构
介绍分层架构的其他方式,如六边形架构、面向服务架构、REST、CQRS、事件驱动(管道和过滤器、长时处理过程、事件源)
第五章:实体
介绍DDD的战术模型中,很多优秀的实体设计例子。
第六章:值对象
介绍如何设计以领域为中心的测试,如何实现值对象。
第七章:领域服务
学习何时应该使用领域服务而不是实体或值对象,以及如何使用领域服务来处理业务逻辑和技术上的集成。
第八章:领域事件
了解领域事件为何如此有用,以及使用领域事件的不同方法。
第九章:模块
学习如何在不同的项目中使用模块
第十章:聚合
如何利用聚合在不同的小规模对象集群间创建一致性边界,从而降低模型的复杂性。
第十一章:工厂
介绍DDD中实现工厂的技巧。
第十二章:资源库
学习如何利用ORM来实现资源库,一种采用基于网格的分布式缓存,另一种采用NoSQL的键值对存储。
集成限界上下文
如何通过上下文映射图来集成不同的模型。
应用程序
学习客户端如何使用模型,如何传递数据,如何使用DTO将数据在模型与用户界面之间传输。
如何阅读这本书
首先掌握以下这些概念:
通用语言:
通用语言(Ubiquitous Language)作用域某个限界上下文,它对领域建模是非常重要的。
战略建模:
界限上下文是一种概念上的边界,领域模型变工作于其中。同事,限界上下文为通用语言提供了一套环境,项目成员通过通用语言来表达软件模型,如下
在战略设计的过程中,你将发现上下文映射图是非常有用的。你的团队将使用上下文映射图来理解项目的范围。如下
架构
战术建模
战术设计的一个重要模式是聚合,聚合可以由单个实体组成,也可以由一组实体和值对象组成。必须在聚合的整个生命周期中保证事务上的一致性。
聚合实例通过资源库进行持久化,另外,对聚合的查找和获取也通过资源库完成
领域服务
在领域模型中,有些业务操作并不能自然地放在实体或值对象上,此时我们可以使用无状态的领域服务(domain service)
领域事件
表示领域模型中发生的重要事件。有多种方式可以对领域事件进行建模,在对聚合进行命令操作时,聚合本身将发布领域事件。
模块
模块中包含的领域对象应该是内聚在一起的。
读书笔记
4.领域驱动设计(DDD)架构整理(分层架构、六边形架构、SOA架构、REST、CRQS、事件驱动架构等)
7.DDD(Domain-Driven Design)领域驱动设计入门说明及示例
阅读感受
首先,阅读这本书的初衷是为了解决当时面试时的一个疑惑。
(当时对领域建模完全没有概念)
面试官问了一些当时自己不懂的技术之后继续追问..
面试官:“你知道领域建模是什么吗?”
我: “知道,就是根据业务进行项目的搭建、包划分、业务编写。”
面试官:“那领域建模有哪些方法呢?”
我: “对业务要有很深的理解,然后又对应的处理方式....”
面试官:“那具体是有哪些方法呢?领域建模是有一些基本方式的”
我: “对业务有很深的把握就好了吧,具体方法我不知道..”
面试官:“哦,我知道了... ”
... 两天后
面试官回复:“技术有点差,不适合我们的核心代码开发,走业务线呢可能也不满足条件...”
现在如果有人问我领域模型是什么的话,我估计能简单回答下,更加得心应手、熟练的应用还是要靠实际的业务来支撑吧。
读完这本书之后,感觉到作者的目的其实很明确。将我们实际开发过程中碰到的一些高层次问题进行了规则化处理。关于服务的架构方式、实体和对象的建立、集成服务的处理都用一种‘通用语言’进行设计。只要有实际开发经验的人,基本上都能从书中找到一些我们在开发当时碰到问题的影子。
它并不是很深奥的技术书籍,而是将我们开发中的术语、流程、方式进行通用化、规则化的整理。可能是一些概念上的东西需要推敲、实例论证才会好理解一点。
对于各阶段的程序员来说都是很有帮助的,欢迎下载阅读
《实现领域驱动设计》百度云下载
链接: https://pan.baidu.com/s/1IMwMGtIsuakZL5RC85uIBQ 提取码: sxkb