书籍推荐:《如何实现领域驱动设计》DDD书籍概览及百度云免费下载

作者简介Vaughn Vernon是一个经验丰富的软件工匠,在软件设计、开发和架构方面拥有超过25年的从业经验。他提倡通过创新来简化软件的设计和实现。从20世纪

作者简介

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)

领域服务执行特定于领域的操作,其中可能涉及到多个领域对象

领域事件

表示领域模型中发生的重要事件。有多种方式可以对领域事件进行建模,在对聚合进行命令操作时,聚合本身将发布领域事件。

领域事件可以由聚合发布

模块

模块中包含的领域对象应该是内聚在一起的。

一个模块包含并组织内聚字啊一起的领域对象

读书笔记

  1. 实现领域驱动设计(DDD)学习-领域服务、领域事件、模块、聚合、工厂、资源库

     

  2. 实现领域驱动设计(DDD)-值对象的特征、使用及实现

3.实现领域驱动设计(DDD)中对实体的设计及使用

4.领域驱动设计(DDD)架构整理(分层架构、六边形架构、SOA架构、REST、CRQS、事件驱动架构等)

5.理解DDD中的限界上下文,整理自实现领域驱动设计

6.DDD中的领域、子域和限界上下文的说明

7.DDD(Domain-Driven Design)领域驱动设计入门说明及示例

阅读感受

首先,阅读这本书的初衷是为了解决当时面试时的一个疑惑。

(当时对领域建模完全没有概念)

面试官问了一些当时自己不懂的技术之后继续追问..

面试官:“你知道领域建模是什么吗?”

我:    “知道,就是根据业务进行项目的搭建、包划分、业务编写。”

面试官:“那领域建模有哪些方法呢?”

我:    “对业务要有很深的理解,然后又对应的处理方式....”

面试官:“那具体是有哪些方法呢?领域建模是有一些基本方式的”

我:    “对业务有很深的把握就好了吧,具体方法我不知道..”

面试官:“哦,我知道了...  ”

... 两天后

面试官回复:“技术有点差,不适合我们的核心代码开发,走业务线呢可能也不满足条件...”

现在如果有人问我领域模型是什么的话,我估计能简单回答下,更加得心应手、熟练的应用还是要靠实际的业务来支撑吧。

读完这本书之后,感觉到作者的目的其实很明确。将我们实际开发过程中碰到的一些高层次问题进行了规则化处理。关于服务的架构方式、实体和对象的建立、集成服务的处理都用一种‘通用语言’进行设计。只要有实际开发经验的人,基本上都能从书中找到一些我们在开发当时碰到问题的影子。

它并不是很深奥的技术书籍,而是将我们开发中的术语、流程、方式进行通用化、规则化的整理。可能是一些概念上的东西需要推敲、实例论证才会好理解一点。

对于各阶段的程序员来说都是很有帮助的,欢迎下载阅读

《实现领域驱动设计》百度云下载

链接: https://pan.baidu.com/s/1IMwMGtIsuakZL5RC85uIBQ 提取码: sxkb

您可能有感兴趣的文章
领域驱动设计的基础知识总结

DDD(领域驱动设计)总结

DDD领域驱动

在.NET应用程序中如何实现领域驱动设计(DDD)

领域驱动设计(DDD):项目目录(包、模块)结构