- ISBN:9787121489792
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:412
- 出版时间:2024-10-01
- 条形码:9787121489792 ; 978-7-121-48979-2
内容简介
本书系统介绍领域驱动设计的理论知识与实践方法,不仅讲解领域驱动设计的战术设计(如实体、值对象、聚合、聚合根、领域服务、领域事件等)、战略设计(如限界上下文、上下文映射、子域等)、领域建模等理论知识,还探讨领域驱动设计的应用架构、类型变化链、一致性、CQRS、事件溯源、编码指南、架构可视化(基于C4模型)等工程实践,探索如何将领域驱动设计与当前业界流行的开发方法(如低代码、敏捷开发、测试驱动开发等)融合,使领域驱动设计成为真正可落地的开发方法。本书在介绍概念时,为概念提供了代码层面的讲解,这样可以极大地降低读者对概念的理解门槛。此外,书中还提供两个热门领域的项目案例――开发视频直播服务和AIGC产品,帮助读者理解、掌握、应用领域驱动设计。
目录
1.1 初步理解领域驱动设计 / 1
1.1.1 领域驱动设计的简史 / 1
1.1.2 领域驱动设计的基本内容 / 1
1.1.3 领域驱动设计的意义 / 3
1.1.4 领域驱动设计的困境 / 5
1.2 如何学习领域驱动设计 / 6
1.2.1 学习难点 / 6
1.2.2 学习路线 / 6
1.3 领域驱动设计常见争议探讨 / 8
1.3.1 领域驱动设计的适用范围 / 8
1.3.2 贫血模型与充血模型的选择 / 10
1.3.3 领域驱动设计落地的认知差异 / 10
1.3.4 领域驱动设计的技术选型 / 11
1.3.5 领域驱动设计与面向对象编程 / 12
1.3.6 不要过度迷信领域驱动设计 / 13
第2 章 应用架构 / 14
2.1 贫血模型和充血模型 / 14
2.1.1 对象的属性和行为 / 14
2.1.2 贫血模型 / 14
2.1.3 充血模型 / 15
2.1.4 领域驱动设计对模型的要求 / 15
2.2 经典贫血三层架构 / 16
2.2.1 解读贫血三层架构 / 16
2.2.2 贫血三层架构的优点 / 17
2.2.3 贫血三层架构的问题 / 17
2.3 DDD 常见的应用架构 / 18
2.3.1 经典的四层架构 / 18
2.3.2 端口和适配器架构 / 19
2.4 应用架构演化 / 22
2.4.1 合并数据模型 / 22
2.4.2 抽取领域模型 / 22
2.4.3 维护领域对象生命周期 / 24
2.4.4 泛化抽象 / 26
2.4.5 完整的项目结构 / 28
2.5 领域对象的生命周期 / 29
2.5.1 领域对象的生命周期介绍 / 29
2.5.2 领域对象的创建过程 / 29
2.5.3 领域对象的保存过程 / 31
2.5.4 领域对象的重建过程 / 31
2.5.5 领域对象的归档过程 / 33
2.6 应用架构的类型变化链 / 33
2.6.1 应用架构各层的对象类型 / 33
2.6.2 查询过程的类型变化 / 36
2.6.3 创建过程的类型转换 / 40
2.6.4 修改过程的类型转换 / 43
第3 章 实体和值对象 / 45
3.1 实体 / 45
3.1.1 实体的概念 / 45
3.1.2 实体的建模 / 45
3.1.3 实体的创建 / 48
3.1.4 实体的重建 / 48
3.2 值对象 / 49
3.2.1 值对象的概念 / 49
3.2.2 值对象的实现 / 49
3.2.3 值对象的建模 / 50
3.2.4 无副作用的值对象方法 / 51
3.2.5 值对象的创建 / 52
3.2.6 Domain Primitive / 53
3.3 无副作用函数 / 54
3.3.1 无副作用函数的定义 / 54
3.3.2 无副作用函数的实现 / 56
第4 章 聚合与聚合根 / 57
4.1 领域模型相关概念梳理 / 57
4.2 聚合与聚合根的定义 / 58
4.3 聚合与聚合根的作用 / 59
4.4 聚合设计的原则 / 62
4.4.1 设计小而全的聚合 / 62
4.4.2 通过唯一标识引用其他聚合根 / 62
4.4.3 一个事务只更新单个聚合 / 63
4.4.4 跨聚合采用*终一致性 / 64
4.5 聚合的拆分 / 64
4.5.1 **次拆分 / 65
4.5.2 第二次拆分 / 65
4.6 聚合根的配套组件 / 66
第5 章 Factory、Repository 和领域服务 / 67
5.1 Factory / 67
5.1.1 Factory 的定义 / 67
5.1.2 Factory 的实现 / 67
5.1.3 Factory 的职责辨析 / 68
5.2 Repository / 68
5.2.1 Repository 的定义 / 68
5.2.2 Repository 的实现 / 68
5.2.3 Repository 实战 / 69
5.3 领域服务 / 79
5.3.1 领域服务的基本概念 / 79
5.3.2 领域服务的特点 / 80
5.3.3 领域服务实战 / 80
5.3.4 领域服务与应用服务的区别 / 81
第6 章 设计模式 / 82
6.1 设计模式与领域驱动设计 / 82
6.2 责任链模式 / 82
6.2.1 责任链模式的定义 / 82
6.2.2 责任链的案例代码 / 83
6.2.3 责任链框架?模式 / 89
6.2.4 在领域驱动设计中使用责任链
6.3 策略模式 / 90
6.3.1 策略模式的定义 / 90
6.3.2 策略模式的案例代码 / 91
6.3.3 在领域驱动设计中使用策略
模式 / 92
6.4 桥接模式 / 96
6.4.1 桥接模式的定义 / 96
6.4.2 桥接模式的案例代码 / 97
6.4.3 在领域驱动设计中使用桥接
模式 / 100
6.5 规约模式 / 106
6.5.1 规约模式的定义 / 106
6.5.2 规约模式的应用场景 / 107
6.5.3 规约模式的案例代码 / 107
6.5.4 在领域驱动设计中使用规约模式 / 111
6.5.5 规约模式的使用误区 / 112
第7 章 防腐层 / 113
7.1 防腐层的概念理解 / 113
7.2 防腐层的实现方案 / 115
7.2.1 适配器模式的定义 / 115
7.2.2 适配器模式的实现 / 116
7.2.3 使用适配器模式实现防腐层 / 118
7.3 防腐层的实现要点总结 / 121
7.3.1 封装技术细节 / 121
7.3.2 尽量简单且稳定 / 121
7.3.3 入参和出参为本地上下文值对象或基本数据类型 / 122
7.3.4 将外部异常转为本地异常 / 122
7.3.5 将外部错误码转为本地异常 / 123
7.3.6 按需返回 / 123
7.3.7 不在实体和值对象中调用防腐层 / 124
第8 章 领域事件 / 126
8.1 幂等设计 / 126
8.1.1 幂等设计的定义 / 126
8.1.2 写操作的幂等性 / 126
8.1.3 幂等设计的实现方案 / 127
8.2 领域事件建模 / 130
8.2.1 领域事件的概念 / 130
8.2.2 领域事件的应用 / 131
8.2.3 领域事件的消息体 / 131
8.2.4 领域事件的建模实现 / 132
8.3 领域事件生成 / 132
8.3.1 应用层创建领域事件 / 133
8.3.2 聚合根创建领域事件 / 134
8.3.3 领域事件生成总结 / 137
8.4 领域事件发布 / 137
8.4.1 事件存储 / 137
8.4.2 可靠地发布领域事件 / 139
8.5 领域事件订阅 / 142
8.5.1 应用层 / 142
8.5.2 领域事件订阅者案例代码 / 143
第9 章 CQRS / 144
9.1 引入CQRS 的契机 / 144
9.2 CQRS 概念理解 / 145
9.3 CQRS 中的对象命名 / 146
9.4 实现CQRS / 147
9.4.1 方法级的CQRS / 147
9.4.2 相同数据源的CQRS / 148
9.4.3 异构数据源的CQRS / 151
9.5 CQRS 的优缺点 / 153
9.5.1 CQRS 的优点 / 153
9.5.2 CQRS 的缺点 / 154
第10 章 事件溯源 / 155
10.1 事件溯源概念理解 / 155
10.2 **种事件溯源实现方案 / 157
10.2.1 整体方案介绍 / 157
10.2.2 组件调整总结 / 164
10.2.3 案例运行展示 / 167
10.3 第二种事件溯源实现方案 / 170
10.3.1 整体方案介绍 / 170
10.3.2 组件调整总结 / 172
10.3.3 案例运行展示 / 175
10.4 第三种事件溯源实现方案 / 177
10.4.1 拉链表介绍 / 177
10.4.2 整体方案介绍 / 178
10.4.3 组件调整总结 / 182
10.4.4 案例运行展示 / 182
第11 章 一致性 / 185
11.1 聚合内事务实现 / 185
11.1.1 聚合内事务的实现误区 / 185
11.1.2 聚合内事务的实现思路 / 186
11.1.3 乐观锁 / 187
11.1.4 数据库读写的性能思考 / 192
11.2 跨聚合事务实现 / 193
11.2.1 跨聚合事务的实现思路 / 193
11.2.2 二阶段提交 / 193
11.2.3 本地消息表 / 197
11.2.4 *大努力通知 / 197
11.2.5 TCC 事务方案 / 198
11.2.6 Saga 事务方案 / 207
11.2.7 跨聚合事务的方案总结 / 219
第12 章 战略设计 / 220
12.1 战略设计概述 / 220
12.1.1 战略设计的概念 / 220
12.1.2 战略设计的误区 / 221
12.2 通用语言 / 221
12.2.1 通用语言的概念 / 221
12.2.2 通用语言的构建 / 222
12.2.3 通用语言的维护 / 222
12.3 限界上下文 / 223
12.3.1 限界上下文的定义 / 223
12.3.2 上下文划分依据 / 223
12.3.3 划分限界上下文的实践经验 / 224
12.4 上下文映射 / 224
12.4.1 上下文映射的概念 / 224
12.4.2 上下文映射的类型 / 225
12.5 子域 / 227
12.5.1 子域的定义 / 227
12.5.2 子域的类型 / 227
12.5.3 子域划分 / 229
12.5.4 子域的演化 / 231
12.5.5 子域思想的应用 / 233
第13 章 领域建模 / 237
13.1 领域建模的基本理解 / 237
13.2 事件风暴法介绍 / 237
13.2.1 建模前准备 / 237
13.2.2 核心概念 / 238
13.2.3 建模过程 / 240
13.3 事件风暴法建模案例实战 / 244
13.3.1 案例描述 / 244
13.3.2 案例建模过程 / 245
第14 章 研发效能 / 252
14.1 脚手架 / 252
14.1.1 Maven Archetype 介绍 / 252
14.1.2 ddd-archetype 的使用 / 253
14.2 编码效率提升 / 260
14.2.1 DDD 编码效率遇到的困境 / 260
14.2.2 Graceful Repsonse / 260
14.2.3 代码生成器 / 266
14.2.4 对象转换工具 / 267
14.3 代码静态分析工具 / 268
14.3.1 SpotBugs / 269
14.3.2 PMD / 271
14.3.3 CheckStyle / 272
14.3.4 SonarLint / 272
14.4 低代码 / 274
14.4.1 低代码介绍 / 274
14.4.2 低代码平台核心流程 / 274
14.4.3 低代码核心技术 / 275
14.4.4 低代码反思 / 278
14.5 持续集成/ 持续交付 / 281
14.5.1 概念理解 / 281
14.5.2 实现方案 / 282
14.5.3 持续集成与领域驱动设计 / 282
第15 章 测试驱动开发 / 283
15.1 TDD 基本理解 / 283
15.2 TDD 常见的误区 / 284
15.3 TDD 技术1
作者简介
互联网一线开发者、资深架构师和研发负责人。擅长复杂场景下的业务需求落地,在电商、直播、互联网健康、互联网金融、物流供应链、电子政务等领域拥有丰富的实践经验;设计、重构、维护过多个百万级QPS的P0级服务,多次参加“618”、“双十一”大促活动,具备丰富的高性能、高并发、高可用系统设计开发经验;多次从 0 到 1 组建研发团队,推动研发体系搭建、研发规范制定、团队文化建设、团队成长规划和技术能力培训;热衷技术精进和知识分享,维护多个开源项目,运营微信公众号“悟道领域驱动设计”。
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥19.0¥48.0 -
机器学习
¥59.4¥108.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0 -
贝叶斯推理与机器学习
¥139.3¥199.0