复杂软件设计之道:领域驱动设计全面解析与实战

复杂软件设计之道:领域驱动设计全面解析与实战

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

编辑推荐

30年行业实践沉淀,助力读者原著学习,更快打开DDD之门。

内容简介

《复杂软件设计之道:领域驱动设计全面解析与实战》同时引入了DDD的新发展成果,如事件风暴建模,并以此建模方式替代传统的DDD建模方式讲解了多个案例。还涉及大量软件系统实现相关的技术和架构,读者在学习DDD的同时,也可以掌握这些技术、架构在DDD实现中的灵活应用。

另外,每个概念或方法的讲解过程都穿插了具体实例,以方便读者结合实例进行学习;第2~7章每章后都有总结与拓展,将本章涉及的案例和知识进行总结,并引入国际DDD专家的心得经验,试图告诉读者一条DDD实战中行之有效的途径。

《复杂软件设计之道:领域驱动设计全面解析与实战》主要面向拥有一定实践经验的软件产品经理、领域专家、软件设计开发相关从业人员,相关初级从业者也可阅读本书。

作者简介

作者彭晨阳,常用网名板桥(bang),DDD等软件架构专研网站——解道(Jdon)的创办者,长期关注国内外软件架构思想和设计开发的新动向,自DDD提出以来,持续研究与实践DDD。

章节目录

版权信息

前言

为什么写这本书

这本书写给谁

如何阅读本书

本书主要内容

致谢

第1章 领域驱动设计基础

1.1 领域驱动设计的起源与发展

1.1.1 程序员为难之处

1.1.2 技术负债与软件质量

1.1.3 ER数据建模与面向对象建模

1.1.4 DDD的诞生和发展

1.2 领域驱动设计的特点

1.2.1 发现和理解问题

1.2.2 领域即边界

1.2.3 解决复杂性

1.2.4 新的数据结构设计方式

1.2.5 需要注重产品的程序员

1.3 领域驱动设计的难点

1.3.1 业务策略和业务规则

1.3.2 统一语言与有界上下文

1.3.3 领域模型的提炼

1.4 领域驱动设计的应用场景

1.4.1 哪些应用不适合?

1.4.2 适合微服务架构

第2章 领域驱动战略设计

2.1 有界上下文

2.1.1 统一语言:统一项目中的交流语言

2.1.2 如何发现有界上下文和统一语言?

2.1.3 有界上下文之间的关系

2.1.4 核心子域、支持子域与通用子域

2.1.5 实例解析:电费结算系统

2.2 按时间线发现有界上下文

2.2.1 UML时序图

2.2.2 实例解析:电商领域之商品管理上下文

2.3 通过领域故事或流程发现有界上下文

2.4 通过事件风暴会议发现有界上下文

2.4.1 领域事件

2.4.2 命令

2.4.3 事件风暴建模法

2.4.4 实例解析:一个典型的事件风暴建模议程

2.5 业务平台与中台设计

2.6 总结与拓展

第3章 聚合设计

3.1 聚合设计的概念

3.1.1 高聚合低关联

3.1.2 聚合的逻辑一致性

3.2 设计聚合的几种方法

3.2.1 改变主谓宾顺序

3.2.2 根据领域事件设计聚合

3.2.3 根据单一职责设计聚合

3.2.4 按时间边界设计聚合

3.2.5 通过事务边界设计聚合

3.2.6 通过ER模型设计聚合

3.3 实例解析:订单系统中的聚合设计

3.3.1 信息拥有者模式

3.3.2 引用模式

3.3.3 奥卡姆剃刀原理

3.3.4 控制者模式

3.3.5 订单状态集中控制实现

3.3.6 做什么和怎么做的分离

3.3.7 在服务中验证聚合

3.3.8 Spring Boot实现

3.4 总结与拓展

第4章 实体和值对象

4.1 失血/贫血模型

4.2 实体

4.2.1 实体的标识

4.2.2 实体的设计

4.2.3 实体对象的创建

4.3 值对象

4.3.1 值对象与实体的区别

4.3.2 用值对象重构

4.4 领域服务

4.4.1 领域服务的特征

4.4.2 领域服务与应用服务

4.5 仓储

4.5.1 自行实现仓储

4.5.2 结合Builder模式实现仓储

4.6 充血模型的设计原则

4.6.1 将公有setter方法变为私有

4.6.2 注重对象的构建

4.7 实例解析:论坛系统实体和值对象设计

4.7.1 聚合根实体是什么?

4.7.2 值对象的设计

4.7.3 状态设计

4.7.4 发帖功能实现

4.7.5 双聚合根

4.7.6 分配职责行为

4.7.7 构建对象必须遵循唯一性

4.8 总结与拓展

第5章 CQRS架构

5.1 DDD架构介绍

5.1.1 MVC模式

5.1.2 传统三层架构

5.1.3 传统DDD分层架构

5.1.4 清洁架构

5.1.5 六边形架构

5.1.6 垂直切片架构

5.2 CQRS架构的特点

5.3 命令和查询分离

5.3.1 查询模型实现

5.3.2 命令模型实现

5.3.3 Command对象

5.3.4 命令和查询的协作

5.4 不同的数据访问方式

5.4.1 查询端存储实现

5.4.2 规格模式

5.4.3 命令与查询的同步

5.5 CAP定理

5.6 领域事件实现数据同步

5.7 实例解析:使用Axon框架实现CQRS

5.7.1 命令端实现

5.7.2 查询端实现

5.8 总结与拓展

第6章 事件溯源

6.1 什么是事件溯源?

6.2 基于事件溯源的聚合根设计

6.2.1 用事件替代状态

6.2.2 活动与事件

6.3 事件溯源的优点

6.3.1 替代分布式事务

6.3.2 事件日志的顺序性

6.3.3 基于事件日志的消息系统

6.4 微服务中的分布式事务实现

6.4.1 引入Saga模式

6.4.2 Saga分布式事务原理

6.4.3 实例解析:账户转账

6.5 使用Apache Kafka实现事件溯源

6.6 投射模式

6.7 更改数据捕获(CDC)

6.8 总结与拓展

第7章 货物运输系统

7.1 领域描述

项目背景

7.2 从流程中发现领域事件

受理流程说明

作业流程说明

7.2.1 受理流程

7.2.2 作业流程

7.3 概念挖掘

7.3.1 划分有界上下文

7.3.2 预订受理上下文

7.3.3 运输作业上下文

7.4 预订受理的聚合设计

7.4.1 聚合的发现和命名

7.4.2 聚合设计

7.4.3 状态设计

7.4.4 命令与事件设计

7.4.5 代码实现

7.4.6 设计和实现的差异

7.5 运输作业的聚合设计

7.5.1 命令、事件和聚合

7.5.2 有界上下文映射

7.5.3 聚合重构设计

7.6 总结与拓展

复杂软件设计之道:领域驱动设计全面解析与实战是2020年由机械工业出版社出版,作者彭晨阳。

得书感谢您对《复杂软件设计之道:领域驱动设计全面解析与实战》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢
软件设计模式(慕课版) 电子书
本书主要内容包括:第一章和第二章是学习基础。第三章为模式概念介绍。第四到六章,针对不同的模式采用:定义,问题分析,解决问题,应用案例的结构进行内容描述。第七章为行业案例,采用Java技术实现设计模式。
《网店设计与装修实战》套装 电子书
本书通过600个实例介绍了淘宝店铺装修的具体操作方法,具体内容包括初识Photoshop、基本功能的操作与使用、图像色调与色彩校正、滤镜及通道使用进阶、商品的调色、商品抠图技法、店铺装修背景制作、艺术及主题字体制作、边框设计、标签与标识的设计、装饰图形的制作、优惠券制作、个护化妆广告设计、数码时代硬广设计、淘宝服饰家居硬广设计、淘宝食品饮料硬广设计、节日促销广告制作、车友会与旅行文化广告制作和网店
Python高手修炼之道:数据处理与机器学习实战 电子书
适读人群 :1.没有编程知识的新手 不同于一般的基础语法讲解教程,本书并未将Python 开发限定于某个集成开发工具(IDE)中,而是采用交互式编程的方式来强化读者对语言特性的理解,帮助新手读者真正理解Python 语言和Python 编程。2.从未接触过Python 语言,但了解一点编程知识的初学者 本书通过对基础知识高度的提炼和概括,以避免初学者陷入低级且冗长的细节知识点而心生懈怠;同时,本书为初学者规划了从初级到高级的编程技能提升路线图。3.具有一定基础的Python 程序员 本书可以作为案头工具书来使用。本书从基础语法、基本技能讲起,涵盖了科学计算、数据处理、机器学习等领域,示例代码涉及30 余个模块的使用。 构建从Python入门到数据分析到机器学习的路线图,入门有章可循; 1.讲解独到,常见盲点趣解析 作者基于多年的经验积累,善于总结概括初学Python过程中的误区。 2.内容全面,常用工具全涵盖 书中介绍的Python工具包覆盖Numpy、Matplotlib、Pandas、SciPy、Scikit-Learn,方便读者拓展实用技能、掌握工作利器。 3.拓展训练,重点知识有强化 语感训练100题、Python内置函数(类)手册、从新手到高手的100个模块,强化知识点的掌握。 4.代码完整,随时动手可复现 本书提供了完整、可验证的代码,方便读者动手练习并强化理解。
UI交互设计与开发实战 电子书
用户界面在当下的网络世界中无处不在,是人与计算机进行交流的窗口。《UI交互设计与开发实战》从软件工程的角度出发,以软件周期开发模型为参考,深入讲解了用户界面设计中各环节的具体内容,并以丰富的图片案例形式介绍用户界面设计如何将交互体验与视觉美观融为一体,也使用了大量可读代码展示用户界面是如何实现的。《UI交互设计与开发实战》分为三部分:第壹部分(第1章)主要介绍用户界面历史及界面设计的相关概念,阐述
JavaScript jQuery网页特效设计任务驱动教程 电子书
本书是网页特效设计任务驱动式教材。本书将网页特效分为9类,分别是基本网页特效、日期时间类网页特效、文字类网页特效、图片类网页特效、表单控件类网页特效、导航菜单类网页特效、选项卡类网页特效、内容展开与折叠类网页特效、页面类网页特效,同时相应地将全书分为9个教学单元,每个教学单元分析和设计一种类型的网页特效,同时将JavaScript和jQuery的相关知识合理地安排到各个教学单元中。