- ISBN:9787111737544
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:359
- 出版时间:2023-11-01
- 条形码:9787111737544 ; 978-7-111-73754-4
本书特色
(1)作者背景:作者是亚信云研发总监,有超过20年的软件研发经验,曾就职于微软等企业。(2)作者经验丰富:作者对DDD有深刻理解,成功主导多个互联网商业项目。(3)克服同类弊病:作者用丰富的经验和深入的思考,将DDD化繁为简,克服了同类书难理解和不落地的问题,让读者拨云见雾。(4)针对性、独创性:DDD原则、DDD底层逻辑、DDD成熟度模型、DDD落地难点等多个知识点都是读者独创,极具针对性,同类书不具备。(5)实操性、思想性:用搭积木方式演示DDD项目搭建过程,将DDD与设计模式和系统架构深度融合,在同类书中同样也不多见。(6)企业界、学术界力荐:来自腾讯、华为、北交大等知名企业和学府的近10位专家高度评价并鼎力推荐。
内容简介
内容简介 这是一本从业务和架构视角讲解DDD的基本原则、底层逻辑、落地难点、落地方法和进阶技巧的实战性著作。 DDD的理论体系复杂,学习和实践门槛较高,已有的关于DDD的著作或多或少存在理论描述难理解、案例示范难落地等问题,阻碍了DDD在实践中的应用。本书作者有20余年的软件研发经验,对DDD有深刻的理解,深谙DDD实践过程中的痛点,他在这本书中高屋建瓴、化繁为简,让读者有拨云见雾之感。 理论部分(第1~3章) 从软件工程的基本思想出发,首先分析了DDD产生的原因,并由此推论出DDD的基本原则,这些内容是学习本书的基础;紧接着分析了DDD落地的难点,帮助读者扫清障碍;然后提炼出了DDD的成熟度模型,包括DDD的战略、战术和衡量指标。这些内容极具针对性和性,是研发团队必须掌握的,也是目前同类书中很少讲的。 实战部分(第4~10章) 从业务建模和架构的角度切入,首先用搭积木的方式讲解和演示了DDD项目由简易到复杂的落地过程,包含大量的业务建模场景和案例,涉及如何应用通用语言、如何建模领域逻辑、如何应用上下文和子域切分系统以及如何保持语言、模型、代码的一致性等重要内容;然后讲解了如何将各种设计模式应用到DDD中,以及如何设计出能让DDD更好落地的系统架构。这些内容兼具实操性和思想性,充满经验和智慧,在同类书中同样也不多见。
目录
前言
第1章 DDD的基本原则与价值分析1
1.1 DDD的初心1
1.1.1 软件项目成败的关键1
1.1.2 两个亟须验证的事实3
1.2 DDD的基本原则6
1.2.1 DDD的两个基本原则7
1.2.2 原则的底层逻辑10
1.3 DDD的价值分析12
1.3.1 复杂度控制12
1.3.2 架构原则16
1.3.3 团队协作20
1.4 关于DDD原则的案例23
第2章 DDD落地难点分析35
2.1 DDD的适用范围35
2.1.1 领域特性36
2.1.2 团队成熟度38
2.1.3 适用性评分表39
2.2 5个常见误区39
2.3 文化的变革44
2.3.1 领域专家的边界44
2.3.2 设计师的锤子46
2.3.3 开发人员的轮子47
2.4 团队的挑战48
2.4.1 管理者的责任48
2.4.2 开发团队的意识和技能50
2.4.3 角色重新定位51
2.5 测试、过程和架构的佳搭档52
2.5.1 测试的佳搭档:TDD和
单元测试52
2.5.2 过程的佳搭档:敏捷过程
和DevOps54
2.5.3 架构的佳搭档:六边形、
洋葱和分层架构56
第3章 DDD成熟度模型59
3.1 成熟度模型的目的及特殊性59
3.2 5个度量维度60
3.3 3级成熟度模型63
第4章 模型的要素—用例、
视图和构造块68
4.1 模型的构建步骤68
4.2 模型的场景:用例69
4.2.1 用例的定义69
4.2.2 用例的目的70
4.2.3 发现用例72
4.2.4 用例的编写73
4.3 模型的数据:类图76
4.3.1 属性77
4.3.2 方法78
4.3.3 注释、约束和关键字79
4.3.4 依赖和限定关联80
4.3.5 聚合与组合82
4.4 模型的行为:交互图83
4.4.1 时序图84
4.4.2 协作图89
4.4.3 交互图与类图的关系91
4.5 模型的变化:操作契约92
4.5.1 作用93
4.5.2 后置条件94
4.5.3 准则94
4.6 模型的构造块:实体、值对象、
领域服务95
4.6.1 实体95
4.6.2 值对象99
4.6.3 实体与值对象的比较103
4.6.4 领域服务105
第5章 从语言到模型—基础
模型构建108
5.1 设计目标108
5.2 设计之前的准备工作110
5.2.1 语言110
5.2.2 角色111
5.2.3 沟通111
5.2.4 方法113
5.2.5 工具113
5.2.6 时间115
5.3 领域模型的构建115
5.3.1 发掘领域概念116
5.3.2 创建关联118
5.3.3 定义属性123
5.3.4 分配职责125
5.3.5 触发事件128
5.3.6 处理异常134
5.4 典型的领域逻辑建模137
5.4.1 规则与约束137
5.4.2 流程与分支140
5.4.3 验证与筛选142
5.4.4 算法与计算144
5.4.5 时间与空间146
5.4.6 有状态与无状态149
5.4.7 同步与异步150
5.5 典型案例151
5.5.1 案例1:在线购物网站152
5.5.2 案例2:汽车租赁系统153
5.5.3 案例3:银行系统154
第6章 精炼模型—深入模型设计156
6.1 模型引力场:聚合156
6.1.1 聚合的定义及作用157
6.1.2 聚合规则158
6.1.3 聚合设计法则158
6.1.4 实现方法161
6.2 模型装配线:工厂163
6.2.1 为什么需要工厂163
6.2.2 厂址选择169
6.3 模型货架:存储库171
6.3.1 为什么需要存储库171
6.3.2 存储库接口175
6.3.3 存储库与工厂的区别176
6.3.4 存储库与数据访问对象的区别177
6.3.5 存储库实现的注意事项177
6.4 富二代的烦恼:基类与继承178
6.4.1 抽象、泛化与DDD178
6.4.2 通用语言与基类179
6.4.3 为多态去继承181
6.4.4 合格的子类、自然的继承关系:
Liskov原则182
6.4.5 抽象类与接口的选择183
6.5 模型质量:优秀的开发组件 184
6.5.1 精心设计领域模型的特征184
6.5.2 模型设计的基本原则186
6.5.3 为扩展性而设计188
第7章 分而治之—上下文、
模块和子域191
7.1 分离用例、模型和团队:上下文191
7.1.1 什么是上下文191
7.1.2 为什么需要上下文193
7.1.3 上下文的识别方法195
7.1.4 识别上下文的步骤199
7.1.5 同一上下文工作法200
7.1.6 跨上下文团队工作法202
7.2 重用性和稳定性:模块207
7.2.1 包的内聚性原则207
7.2.2 包的耦合性原则209
7.3 区别特殊性与一般性:子域211
7.3.1 核心竞争力:核心域211
7.3.2 周边业务:支撑域215
7.3.3 通用能力:通用域215
7.4 上下文、模块和子域之间的关系216
7.4.1 上下文和子域的关系216
7.4.2 上下文和模块的关系216
7.4.3 子域和模块的关系217
第8章 关键细节—从模型到代码218
8.1 DDD 中的代码要求
作者简介
王红亮,资深软件开发专家,有超过20年的产品研发经验。现就职于亚信云,担任研发总监;曾就职微软、中信科技等企业。作为技术领头人,成功研发和交付多款互联网商业软件,如多云管理平台SmartCloud,中信产业互联网平台等。DDD领域的资深专家,对DDD有非常深刻的理解。此外,他在研发管理、架构设计、云计算等领域也积累了大量的一线实战经验。《微软软件研发的奥秘MSF》译者,企业上云宝典《云鉴》作者之一,北京交通大学软件学院优秀企业讲师。
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥12.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