领域驱动设计

领域驱动设计 pdf epub mobi txt 电子书 下载 2026

出版者:人民邮电出版社
作者:[美] Eric Evans
出品人:
页数:370
译者:赵俐
出版时间:2016-6-1
价格:69
装帧:平装
isbn号码:9787115376756
丛书系列:
图书标签:
  • 领域模型
  • 软件工程
  • 软件架构
  • DDD
  • 设计模式
  • 计算机
  • 架构
  • 领域驱动设计
  • 领域驱动设计
  • 软件架构
  • 面向对象
  • 业务建模
  • 分层架构
  • 实体关系
  • 限界上下文
  • 聚合根
  • 核心域
  • 设计模式
想要找书就要到 小美书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

本书是领域驱动设计方面的经典之作,修订版更是对之前出版的中文版进行了全面的修订和完善。

全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计新实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。

作者简介

Eric Evans “领域驱动设计之父”,世界杰出软件建模专家。他创建了Domain Language公司,致力于帮助公司机构创建与业务紧密相关的软件。他在世界各地宣讲领域驱动设计(Domain-Driven Design,DDD)的思想,开设课程,参加会议,接受专访,拥有大批的追随者。从20世纪80年代开始,他就以设计师和程序员的双重身份参与过许多大型面向对象系统的设计和开发,涉及各种复杂的业务和技术领域。同时,他还培训和指导过许多开发团队开展极限编程实践。

目录信息

目 录
第一部分 运用领域模型
第1章 消化知识 5
1.1 有效建模的要素 9
1.2 知识消化 10
1.3 持续学习 11
1.4 知识丰富的设计 12
1.5 深层模型 15
第2章 交流与语言的使用 16
2.1 模式:UBIQUITOUS LANGUAGE 16
2.2 “大声地”建模 21
2.3 一个团队,一种语言 22
2.4 文档和图 24
2.4.1 书面设计文档 25
2.4.2 完全依赖可执行代码的情况 27
2.5 解释性模型 27
第3章 绑定模型和实现 29
3.1 模式:MODEL-DRIVEN DESIGN 30
3.2 建模范式和工具支持 32
3.3 揭示主旨:为什么模型对用户至关重要 38
3.4 模式:HANDS-ON MODELER 39
第二部分 模型驱动设计的构造块
第4章 分离领域 43
4.1 模式:LAYERED ARCHITECTURE 43
4.1.1 将各层关联起来 46
4.1.2 架构框架 47
4.2 领域层是模型的精髓 48
4.3 模式:THE SMART UI“反模式” 48
4.4 其他分离方式 50
第5章 软件中所表示的模型 51
5.1 关联 52
5.2 模式:ENTITY(又称为REFERENCE OBJECT) 56
5.2.1 ENTITY建模 59
5.2.2 设计标识操作 60
5.3 模式:VALUE OBJECT 62
5.3.1 设计VALUE OBJECT 64
5.3.2 设计包含VALUE OBJECT的关联 67
5.4 模式:SERVICE 67
5.4.1 SERVICE与孤立的领域层 69
5.4.2 粒度 70
5.4.3 对SERVICE的访问 70
5.5 模式:MODULE(也称为PACKAGE) 71
5.5.1 敏捷的MODULE 72
5.5.2 通过基础设施打包时存在的隐患 73
5.6 建模范式 75
5.6.1 对象范式流行的原因 76
5.6.2 对象世界中的非对象 77
5.6.3 在混合范式中坚持使用MODEL-DRIVEN DESIGN 78
第6章 领域对象的生命周期 80
6.1 模式:AGGREGATE 81
6.2 模式:FACTORY 89
6.2.1 选择FACTORY及其应用位置 91
6.2.2 有些情况下只需使用构造函数 93
6.2.3 接口的设计 94
6.2.4 固定规则的相关逻辑应放置在哪里 94
6.2.5 ENTITY FACTORY与VALUE OBJECT FACTORY 95
6.2.6 重建已存储的对象 95
6.3 模式:REPOSITORY 97
6.3.1 REPOSITORY的查询 101
6.3.2 客户代码可以忽略REPOSITORY的实现,但开发人员不能忽略 102
6.3.3 REPOSITORY的实现 103
6.3.4 在框架内工作 104
6.3.5 REPOSITORY与FACTORY的关系 104
6.4 为关系数据库设计对象 106
第7章 使用语言:一个扩展的示例 108
7.1 货物运输系统简介 108
7.2 隔离领域:引入应用层 110
7.3 将ENTITY和VALUE OBJECT区别开 110
7.4 设计运输领域中的关联 112
7.5 AGGREGATE边界 113
7.6 选择REPOSITORY 113
7.7 场景走查 115
7.7.1 应用程序特性举例:更改Cargo的目的地 115
7.7.2 应用程序特性举例:重复业务 116
7.8 对象的创建 116
7.8.1 Cargo的FACTORY和构造函数 116
7.8.2 添加Handling Event 117
7.9 停一下,重构:Cargo AGGREGATE 的另一种设计 118
7.10 运输模型中的MODULE 120
7.11 引入新特性:配额检查 122
7.11.1 连接两个系统 123
7.11.2 进一步完善模型:划分业务 124
7.11.3 性能优化 125
7.12 小结 126
第三部分 通过重构来加深理解
第8章 突破 131
8.1 一个关于突破的故事 131
8.1.1 华而不实的模型 132
8.1.2 突破 133
8.1.3 更深层模型 135
8.1.4 冷静决策 137
8.1.5 成果 138
8.2 机遇 138
8.3 关注根本 138
8.4 后记:越来越多的新理解 139
第9章 将隐式概念转变为显式概念 140
9.1 概念挖掘 140
9.1.1 倾听语言 140
9.1.2 检查不足之处 144
9.1.3 思考矛盾之处 148
9.1.4 查阅书籍 148
9.1.5 尝试,再尝试 150
9.2 如何为那些不太明显的概念建模 150
9.2.1 显式的约束 151
9.2.2 将过程建模为领域对象 153
9.2.3 模式:SPECIFICATION 154
9.2.4 SPECIFICATION的应用和实现 156
第10章 柔 性 设 计 168
10.1 模式:INTENTION-REVEALING
INTERFACES 169
10.2 模式:SIDE-EFFECT-FREE FUNCTION 173
10.3 模式:ASSERTION 177
10.4 模式:CONCEPTUAL CONTOUR 181
10.5 模式:STANDALONE CLASS 184
10.6 模式:CLOSURE OF OPERATION 186
10.7 声明式设计 188
10.8 声明式设计风格 190
10.9 切入问题的角度 197
10.9.1 分割子领域 197
10.9.2 尽可能利用已有的形式 198
第11章 应用分析模式 206
第12章 将设计模式应用于模型 217
12.1 模式:STRATEGY(也称为POLICY) 218
12.2 模式:COMPOSITE 221
12.3 为什么没有介绍FLYWEIGHT 226
第13章 通过重构得到更深层的理解 227
13.1 开始重构 227
13.2 探索团队 227
13.3 借鉴先前的经验 228
13.4 针对开发人员的设计 229
13.5 重构的时机 229
13.6 危机就是机遇 230
第四部分 战略设计
第14章 保持模型的完整性 233
14.1 模式:BOUNDED CONTEXT 235
14.2 模式:CONTINUOUS INTEGRATION 239
14.3 模式:CONTEXT MAP 241
14.3.1 测试CONTEXT的边界 247
14.3.2 CONTEXT MAP的组织和文档化 247
14.4 BOUNDED CONTEXT之间的关系 248
14.5 模式:SHARED KERNEL 248
14.6 模式:CUSTOMER/SUPPLIER DEVELOPMENT TEAM 250
14.7 模式:CONFORMIST 253
14.8 模式:ANTICORRUPTION LAYER 255
14.8.1 设计ANTICORRUPTION LAYER的接口 256
14.8.2 实现ANTICORRUPTION LAYER 256
14.8.3 一个关于防御的故事 259
14.9 模式:SEPARATE WAY 260
14.10 模式:OPEN HOST SERVICE 261
14.11 模式:PUBLISHED LANGUAGE 262
14.12 “大象”的统一 264
14.13 选择你的模型上下文策略 267
14.13.1 团队决策或更高层决策 268
14.13.2 置身上下文中 268
14.13.3 转换边界 268
14.13.4 接受那些我们无法更改的事物:描述外部系统 269
14.13.5 与外部系统的关系 269
14.13.6 设计中的系统 270
14.13.7 用不同模型满足特殊需要 270
14.13.8 部署 271
14.13.9 权衡 271
14.13.10 当项目正在进行时 272
14.14 转换 272
14.14.1 合并CONTEXT:SEPARATE WAY →SHARED KERNEL 273
14.14.2 合并CONTEXT:SHARED KERNEL→CONTINUOUS INTEGRATION 274
14.14.3 逐步淘汰遗留系统 275
14.14.4 OPEN HOST SERVICE→PUBLISHED LANGUAGE 276
第15章 精炼 277
15.1 模式:CORE DOMAIN 278
15.1.1 选择核心 280
15.1.2 工作的分配 280
15.2 精炼的逐步提升 281
15.3 模式:GENERIC SUBDOMAIN 282
15.3.1 通用不等于可重用 286
15.3.2 项目风险管理 287
15.4 模式:DOMAIN VISION STATEMENT 287
15.5 模式:HIGHLIGHTED CORE 289
15.5.1 精炼文档 289
15.5.2 标明CORE 290
15.5.3 把精炼文档作为过程工具 291
15.6 模式:COHESIVE MECHANISM 292
15.6.1 GENERIC SUBDOMAIN与COHESIVE MECHANISM的比较 293
15.6.2 MECHANISM是CORE DOMAIN一部分 294
15.7 通过精炼得到声明式风格 294
15.8 模式:SEGREGATED CORE 295
15.8.1 创建SEGREGATED CORE的代价 296
15.8.2 不断发展演变的团队决策 296
15.9 模式:ABSTRACT CORE 301
15.10 深层模型精炼 302
15.11 选择重构目标 302
第16章 大型结构 303
16.1 模式:EVOLVING ORDER 306
16.2 模式:SYSTEM METAPHOR 308
16.3 模式:RESPONSIBILITY LAYER 309
16.4 模式:KNOWLEDGE LEVEL 321
16.5 模式:PLUGGABLE COMPONENT FRAMEWORK 328
16.6 结构应该有一种什么样的约束 332
16.7 通过重构得到更适当的结构 333
16.7.1 ZUI小化 333
16.7.2 沟通和自律 334
16.7.3 通过重构得到柔性设计 334
16.7.4 通过精炼可以减轻负担 334
第17章 领域驱动设计的综合运用 336
17.1 把大型结构与BOUNDED CONTEXT结合起来使用 336
17.2 将大型结构与精炼结合起来使用 339
17.3 首先评估 339
17.4 由谁制定策略 341
17.4.1 从应用程序开发自动得出的结构 341
17.4.2 以客户为中心的架构团队 341
17.5 制定战略设计决策的6个要点 342
17.5.1 技术框架同样如此 344
17.5.2 注意总体规划 345
结束语
附录 351
术语表 354
参考文献 357
图片说明 359
索引 360
· · · · · · (收起)

读后感

评分

评分

评分

软件最有价值部分是它的领域模型部分。软件开发应该围绕这个核心进行组织,这是领域驱动设计的核心理念。 这本书有价值的地方甚多,值得反复细细揣摩,书中最重要观点,摘录如下: 1.软件开发复杂性的根本原因是问题领域本身错综复杂,控制复杂性的关键是有一个好的领域模型...

评分

从当今角度看,很多概念都有了大发展,日常工作中接触到的思想都不谋而合,甚至已经远远超越了作者当年的思想。但是作为领域设计的开篇著作,仍然有很好的阅读价值。 全篇最核心的概念是,人类的记忆力思考力限制,会将一个大型系统耦合复杂化。为了更好的理解及团队成员的合作...  

评分

《领域驱动设计》一书是领域模型领域的代表作,被很多牛人推荐,其中的概念还需要在思考和实践中逐步理解。书中描述的一些现象有些与我们类似,比如越来越多的领域规则被嵌入到查询代码中,或者直接就不见了。领域逻辑跑到查询代码和客户代码中去了,而实体和值对象变成了纯粹...  

用户评价

评分

这本厚厚的书,光是翻阅目录就能感觉到作者在架构上的用心良苦。它不是那种轻飘飘的“快速入门”手册,而是像一本扎实的工程学教科书。我记得刚开始阅读时,对其中关于“限界上下文”(Bounded Context)的论述琢磨了很久。作者没有急于抛出解决方案,而是先花了大量的篇幅去剖析软件系统在面对复杂业务需求时,天然产生的“边界模糊”问题。他通过大量的案例对比,生动地展示了在一个大而无当的单体应用中,不同团队对同一业务术语理解的偏差是如何导致灾难性后果的。这种对根源性问题的深挖,远超出了我过去接触的任何设计模式书籍。最让我印象深刻的是,书中将“通用语言”(Ubiquitous Language)提升到了战略决策的高度,强调它不只是代码层面的命名规范,更是团队间对业务模型共识的体现。这种从哲学思辨到技术实践的无缝过渡,让人不得不承认,作者是在构建一套完整的、关于如何“思考”复杂系统的思维框架,而非仅仅是提供一套现成的代码配方。读完这部分,我感觉自己对“清晰性”的追求,从仅仅追求代码可读性,上升到了追求业务理解的透明度。

评分

这本书的文字功底也值得称赞,它在保持技术深度的同时,避免了陷入晦涩的术语泥潭。作者似乎很擅长用类比来解释那些抽象的概念。比如,他将领域模型比作一个精密的外科手术工具,强调其锋利和专一性,这与我过去那种“大而全”的对象模型形成了鲜明的对比。这种精炼的比喻,使得那些初听起来非常陌生的术语,在脑海中迅速构建起一个具象化的模型。而且,书中对不同层次的建模者进行了明确的区分:战略设计者的宏观视野和战术设计者的微观雕琢。这种分层叙事,让不同角色的读者都能在书中找到自己的锚点。我过去总是将所有的建模工作混为一谈,这本书清晰地划清了界限:战略决定了“做什么”,战术决定了“怎么做”。这种对角色职责的清晰界定,对指导团队协作效率的提升有着立竿见影的效果,感觉就像是为我们团队的软件开发流程打了一次高效的“除垢针”。

评分

读完这本书,我最大的感受是,它极大地拓宽了我对“软件建模”的理解边界。过去我总以为建模就是画类图、ER图,关注数据结构和方法签名。然而,这本书却将“时间”和“事件”置于核心地位。对“领域事件”(Domain Events)和“状态机”的深入探讨,迫使我重新审视那些看似简单的业务流程。例如,书中对订单生命周期的分析,不再仅仅关注订单数据字段的变化,而是聚焦于“什么动作触发了什么状态的转变”,以及这些转变如何在不同限界上下文中被感知和响应。这种以时间流驱动的建模视角,尤其在处理复杂的、涉及多个参与者的业务流程时,展现出无与伦比的清晰度和可追溯性。它不再是静态的蓝图,而更像是一部关于业务如何“演化”的编年史。这使得我在设计那些需要严格审计和合规的系统时,拥有了更坚实、更具解释性的理论基础。

评分

与其他强调“快速迭代”或“技术选型”的书籍相比,这本书显得尤为沉稳和耐人寻味。它的价值不在于教你今天能立刻写出最酷炫的微服务架构,而在于提供了一套可以抵抗时间侵蚀的思维工具。书中的许多设计原则,例如对“贫血模型”和“充血模型”的辩证分析,都不是一刀切的教条,而是引导读者根据领域的复杂性和模型的演化速度去选择最适合的载体。我个人尤其喜欢它在最后部分对“架构的持续演进”所做的总结。作者坦诚地指出,没有完美的初始架构,真正的胜利在于建立起一套能够自我修复、能够平稳过渡的机制。这种对现实世界软件生命周期的深刻洞察,让这本书的实用价值得以最大化。它不像一本理论指南,更像是一位经验丰富的大师,在你迷茫时递过来的那盏指路明灯,不是告诉你终点在哪里,而是告诉你如何稳健地走好脚下的每一步。

评分

深入阅读中后段,你会发现作者的叙事风格开始变得愈发严谨和学术化,如同在法庭上陈述一份无可辩驳的论据。尤其是在讲解“上下文映射图”(Context Map)的那一章,简直是一场视觉和逻辑上的盛宴。作者没有满足于给出静态的图示,而是详细拆解了各种映射关系——比如“防腐层”(Anti-Corruption Layer)、“客户/供应商”(Customer/Supplier)等——这些关系背后的驱动力和潜在的维护成本被分析得入木三分。我特别欣赏作者处理技术债务的态度。他没有将其视为洪水猛兽,而是将其视为一种“可接受的、暂时的妥协”,关键在于你要清楚地知道你在哪一个上下文中做了这种妥协,并明确其边界。这种务实主义的论调,极大地减轻了我们在实际项目中追求“完美架构”时的焦虑感。每当我遇到一个棘手的集成点时,翻回这一章,总能找到理论指导来帮助我权衡利弊,决定是进行深度集成还是建立一个隔离的转换层。这本书真正教会我的是,架构决策从来都不是绝对的好与坏,而是特定业务目标下的最优平衡点。

评分

说不清这东西是否有用,那就算没用吧。分层,模块化不讲我也知道呀,至于业务驱动编码,谁家还能技术驱动业务?

评分

翻译就不说了,美国回来的大厂同事表达没见过ddd

评分

十年前东西,有些不知不觉在用了;边界上下方对微服务有借鉴作用,其它业务领域了解不深

评分

本书与之前读过的其他技术书差异很大,它的主题是针对大型复杂行业或领域软件开发的一些思想。书中重点提出了很多概念,这些概念大多都很抽象,所以读起来会比较吃力。这本书也需要经常回味,一次性读完的话很多东西也吃不透。 这本书也凝结了作者在软件设计中的很多经验,所以很多话都可以仔细思考推敲,对我们平时开发中遇到的问题也做了很多思考或总结,值得经常拿出来翻一翻。 当然本书里面多少思想适用于我们目前的工作,多少适用于互联网微服务架构下的开发,也是值得我们思考的问题。

评分

讲的东西比较抽象,应该是经典的东西,但是看上去总感觉隔阂:有的地方熟悉,有的地方感觉价值不那么大,不知道是不是翻译的问题。

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.quotespace.org All Rights Reserved. 小美书屋 版权所有