书籍详情
领域驱动设计:软件核心复杂性应对之道(英文版)
作者:埃里克·埃文斯(Eric Evans) 著
出版社:人民邮电出版社
出版时间:2020-09-01
ISBN:9787115542946
定价:¥99.00
购买这本书可以去
内容简介
本书是领域驱动设计方面的经典之作。全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。本书共分4个部分,第一部分提出领域驱动开发的基本目标,第二部分将面向对象领域建模中的一些核心的最佳实践提炼为一组基本的构造块,第三部分讨论如何将构造块装配为实用的模型,从而实现其价值,第四部分讨论在复杂系统、大型组织以及与外部系统和遗留系统的交互中出现的复杂情况。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些最佳实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计最佳实践、已验证的技术以及应对复杂领域的软件项目开发的基本原则。本书适合各层次的面向对象软件开发人员和系统分析师阅读。
作者简介
埃里克·埃文斯(Eric Evans)“领域驱动设计之父”,世界著名软件建模专家。他创建了Domain Language公司,致力于帮助机构创建与其业务紧密相关的软件。他在世界各地宣讲领域驱动设计(Domain-Driven Design,DDD)的思想,开设相关课程,参加会议,接受专访,拥有大批的追随者。从20世纪80年代开始,他就以设计师和程序员的双重身份参与过许多大型面向对象系统的设计和开发,这其中涉及各种复杂的业务领域和技术领域。同时,他还培训和指导过许多开发团队开展极限编程实践。
目录
目 录
Part I Putting the Domain Model to Work / 运用领域模型 1
Chapter 1: Crunching Knowledge / 消化知识 7
Ingredients of Effective Modeling / 有效建模的要素 12
Knowledge Crunching / 知识消化 13
Continuous Learning / 持续学习 15
Knowledge-Rich Design / 知识丰富的设计 17
Deep Models / 深层模型 20
Chapter 2: Communication and the Use of Language / 交流与语言的使用 23
UBIQUITOUS LANGUAGE 24
Modeling Out Loud /“大声地”建模 30
One Team, One Language / 一个团队,一种语言 32
Documents and Diagrams / 文档和图 35
Written Design Documents / 书面设计文档 37
Executable Bedrock / 完全依赖可执行代码的情况 40
Explanatory Models / 解释性模型 41
Chapter 3: Binding Model and Implementation / 绑定模型和实现 45
MODEL-DRIVEN DESIGN 47
Modeling Paradigms and Tool Support / 建模范式和工具支持 50
Letting the Bones Show: Why Models Matter to Users / 揭示主旨:为什么模型对用户至关重要 57
HANDS-ON MODELERS 60
Part II The Building Blocks of a Model-Driven Design / 模型驱动设计的构造块 63
Chapter 4: Isolating the Domain / 分离领域 67
LAYERED ARCHITECTURE 68
Relating the Layers / 将各层关联起来 72
Architectural Frameworks / 架构框架 74
The Domain Layer Is Where the Model Lives / 领域层是模型的精髓 75
THE SMART UI “ANTI-PATTERN” / THE SMART UI“反模式” 76
Other Kinds of Isolation / 其他分离方式 79
Chapter 5: A Model Expressed in Software / 软件中所表示的模型 81
Associations / 关联 82
ENTITIES(A.K.A. REFERENCE OBJECTS)/
ENTITY(也称为REFERENCE OBJECT) 89
Modeling ENTITIES / ENTITY建模 93
Designing the Identity Operation / 设计标识操作 94
VALUE OBJECTS 97
Designing VALUE OBJECTS / 设计VALUE OBJECT 99
Designing Associations That Involve VALUE OBJECTS / 设计包含VALUE OBJECT的关联 102
SERVICES 104
SERVICES and the Isolated Domain Layer / SERVICE与孤立的领域层 106
Granularity / 粒度 108
Access to SERVICES / 对SERVICE的访问 108
MODULES(A.K.A. PACKAGES)/ MODULE(也称为PACKAGE) 109
Agile MODULES / 敏捷的MODULE 111
The Pitfalls of Infrastructure-Driven Packaging / 通过基础设施打包时存在的隐患 112
Modeling Paradigms / 建模范式 116
Why the Object Paradigm Predominates / 对象范式流行的原因 116
Nonobjects in an Object World / 对象世界中的非对象 119
Sticking with MODEL-DRIVEN DESIGN When Mixing Paradigms /在混合范式中坚持使用MODEL-DRIVEN DESIGN 120
Chapter 6: The Life Cycle of a Domain Object / 领域对象的生命周期 123
AGGREGATES 125
FACTORIES 136
Choosing FACTORIES and Their Sites / 选择FACTORY及其应用位置 139
When a Constructor Is All You Need / 有些情况下只需使用构造函数 141
Designing the Interface / 接口的设计 143
Where Does Invariant Logic Go /
固定规则的相关逻辑应放置在哪里 144
ENTITY FACTORIES Versus VALUE OBJECT FACTORIES / ENTITY FACTORY与VALUE OBJECT FACTORY 144
Reconstituting Stored Objects / 重建已存储的对象 145
REPOSITORIES 147
Querying a REPOSITORY / REPOSITORY的查询 152
Client Code Ignores REPOSITORY Implementation; Developers Do Not / 客户代码可以忽略REPOSITORY的实现,但开发人员不能忽略 154
Implementing a REPOSITORY / REPOSITORY的实现 155
Working Within Your Frameworks / 在框架内工作 156
The Relationship with FACTORIES / 与FACTORY的关系 157
Designing Objects for Relational Databases / 为关系数据库设计对象 159
Chapter 7: Using the Language: An Extended Example / 使用语言:一个扩展的示例 163
Introducing the Cargo Shipping System / 货物运输系统简介 163
Isolating the Domain: Introducing the Applications / 隔离领域:引入应用层 166
Distinguishing ENTITIES and VALUE OBJECTS / 将ENTITY和VALUE OBJECT区别开 167
Designing Associations in the Shipping Domain / 设计运输领域中的关联 169
AGGREGATE Boundaries / AGGREGATE边界 170
Selecting REPOSITORIES / 选择REPOSITORY 172
Walking Through Scenarios / 场景走查 173
Sample Application Feature: Changing the Destination of a Cargo / 应用程序特性举例:更改Cargo的目的地 173
Sample Application Feature: Repeat Business / 应用程序特性举例:重复业务 173
Object Creation / 对象的创建 174
FACTORIES and Constructors for Cargo / Cargo的FACTORY和构造函数 174
Adding a Handling Event / 添加Handling Event 175
Pause for Refactoring: An Alternative Design of the Cargo AGGREGATE / 停一下,重构:Cargo AGGREGATE 的另一种设计 177
MODULES in the Shipping Model / 运输模型中的MODULE 179
Introducing a New Feature: Allocation Checking / 引入新特性:配额检查 181
Connecting the Two Systems / 连接两个系统 182
Enhancing the Model: Segmenting the Business / 进一步完善模型:划分业务 183
Performance Tuning / 性能优化 185
A Final Look / 小结 186
Part III Refactoring Toward Deeper Insight / 通过重构来加深理解 187
Chapter 8: Breakthrough / 突破 193
Story of a Breakthrough / 一个关于突破的故事 194
A Decent Model, and Yet . . . / 华而不实的模型 194
The Breakthrough / 突破 196
A Deeper Model / 更深层模型 198
A Sobering Decision / 冷静决策 199
The Payoff / 成果 200
Opportunities / 机遇 201
Focus on Basics / 关注根本 201
Epilogue: A Cascade of New Insights / 后记:越来越多的新理解 202
Chapter 9: Making Implicit Concepts Explicit /
将隐式概念转变为显式概念 205
Digging Out Concepts / 概念挖掘 206
Listen to Language / 倾听语言 206
Scrutinize Awkwardness / 检查不足之处 210
Contemplate Contradictions / 思考矛盾之处 216
Read the Book / 查阅书籍 217
Try, Try Again / 尝试,再尝试 219
How to Model Less Obvious Kinds of Concepts /
如何为那些不太明显的概念建模 219
Explicit Constraints / 显式的约束 220
Processes as Domain Objects / 将过程建模为领域对象 222
SPECIFICATION 224
Applying and Implementing SPECIFICATION / SPECIFICATION的应用和实现 227
Chapter 10: Supple Design / 柔性设计 243
INTENTION-REVEALING INTERFACES 246
SIDE-EFFECT-FREE FUNCTIONS 250
ASSERTIONS 255
CONCEPTUAL CONTOURS 260
STANDALONE CLASSES 265
CLOSURE OF OPERATIONS 268
Declarative Design / 声明式设计 270
A Declarative Style of Design / 声明式设计风格 273
Angles of Attack / 切入问题的角度 282
Carve Off Subdomains / 分割子领域 283
Draw on Established Formalisms, When You Can / 尽可能利用已有的形式 283
Chapter 11: Applying Analysis Patterns / 应用分析模式 293
Chapter 12: Relating Design Patterns to the Model / 将设计模式应用于模型 309
STRATEGY (A.K.A. POLICY) / STRATEGY(也称为POLICY) 311
COMPOSITE 315
Why Not FLYWEIGHT / 为什么没有介绍FLYWEIGHT 320
Chapter 13: Refactoring Toward Deeper Insight / 通过重构得到更深层的理解 321
Initiation / 开始重构 321
Exploration Teams / 探索团队 322
Prior Art / 借鉴先前的经验 323
A Design for Developers / 针对开发人员的设计 324
Timing / 重构的时机 324
Crisis as Opportunity / 危机就是机遇 325
Part IV Strategic Design / 战略设计 327
Chapter 14: Maintaining Model Integrity / 保持模型的完整性 331
BOUNDED CONTEXT 335
CONTINUOUS INTEGRATION 341
CONTEXT MAP 344
Testing at the CONTEXT Boundaries / 测试CONTEXT的边界 351
Organizing and Documenting CONTEXT MAPS / CONTEXT MAP的组织和文档化 351
Relationships Between BOUNDED CONTEXTS / BOUNDED CONTEXT之间的关系 352
SHARED KERNEL 354
CUSTOMER/SUPPLIER DEVELOPMENT TEAMS 356
CONFORMIST 361
ANTICORRUPTION LAYER 364
Designing the Interface of the ANTICORRUPTION LAYER / 设计ANTICORRUPTION LAYER的接口 366
Implementing the ANTICORRUPTION LAYER / 实现ANTICORRUPTION LAYER 366
A Cautionary Tale / 一个关于防御的故事 370
SEPARATE WAYS 371
OPEN HOST SERVICE 374
PUBLISHED LANGUAGE 375
Unifying an Elephant /“大象”的统一 378
Choosing Your Model Context Strategy / 选择你的模型上下文策略 381
Team Decision or Higher / 团队决策或更高层决策 382
Putting Ourselves in Context / 置身上下文中 382
Transforming Boundaries / 转换边界 382
Accepting That Which We Cannot Change: Delineating the External Systems / 接受那些我们无法更改的事物:描述外部系统 383
Relationships with the External Systems / 与外部系统的关系 384
The System Under Design / 设计中的系统 385
Catering to Special Needs with Distinct Models / 用不同模型满足特殊需要 386
Deployment / 部署 387
The Trade-off / 权衡 388
When Your Project Is Already Under Way / 当项目正在进行时 388
Transformations / 转换 389
Merging CONTEXTS: SEPARATE WAYS SHARED KERNEL / 合并CONTEXT:SEPARATE WAY → SHARED KERNEL 389
Merging CONTEXTS: SHARED KERNEL CONTINUOUS INTEGRATION / 合并CONTEXT:SHARED KERNEL → CONTINUOUS INTEGRATION 391
Phasing Out a Legacy System / 逐步淘汰遗留系统 393
OPEN HOST SERVICE → PUBLISHED LANGUAGE 394
Chapter 15: Distillation / 精炼 397
CORE DOMAIN 400
Choosing the CORE / 选择CORE 402
Who Does the Work / 工作的分配 403
An Escalation of Distillations / 精炼的逐步提升 404
GENERIC SUBDOMAINS 406
Generic Doesn’t Mean Reusable / 通用不等于可重用 412
Project Risk Management / 项目风险管理 413
DOMAIN VISION STATEMENT 415
HIGHLIGHTED CORE 417
The Distillation Document / 精炼文档 418
The Flagged CORE / 标明CORE 419
The Distillation Document as Process Tool / 把精炼文档作为过程工具 420
COHESIVE MECHANISMS 422
GENERIC SUBDOMAIN Versus COHESIVE MECHANISM / GENERIC SUBDOMAIN与COHESIVE MECHANISM的比较 424
When a MECHANISM Is Part of the CORE DOMAIN / MECHANISM是CORE DOMAIN一部分 425
Distilling to a Declarative Style / 通过精炼得到声明式风格 426
SEGREGATED CORE 428
The Costs of Creating a SEGREGATED CORE / 创建SEGREGATED CORE的代价 429
Evolving Team Decision / 不断发展演变的团队决策 430
ABSTRACT CORE 435
Deep Models Distill / 深层模型精炼 436
Choosing Refactoring Targets / 选择重构目标 437
Chapter 16: Large-Scale Structure / 大型结构 439
EVOLVING ORDER 444
SYSTEM METAPHOR 447
RESPONSIBILITY LAYERS 450
KNOWLEDGE LEVEL 465
PLUGGABLE COMPONENT FRAMEWORK 475
How Restrictive Should a Structure Be / 结构应该有一种什么样的约束 480
Refactoring Toward a Fitting Structure / 通过重构得到更适当的结构 481
Minimalism / 最小化 481
Communication and Self-Discipline / 沟通和自律 482
Restructuring Yields Supple Design / 通过重构得到柔性设计 482
Distillation Lightens the Load / 通过精炼可以减轻负担 483
Chapter 17: Bringing the Strategy Together / 领域驱动设计的综合运用 485
Combining Large-Scale Structures and BOUNDED CONTEXTS / 把大型结构与BOUNDED CONTEXT结合起来使用 485
Combining Large-Scale Structures and Distillation / 将大型结构与精炼结合起来使用 488
Assessment First / 首先评估 490
Who Sets the Strategy / 由谁制定策略 490
Emergent Structure from Application Development / 从应用程序开发自动得出的结构 491
A Customer-Focused Architecture Team / 以客户为中心的架构团队 492
Six Essentials for Strategic Design Decision Making / 制定战略设计决策的6个要点 492
The Same Goes for the Technical Frameworks / 技术框架同样如此 495
Beware the Master Plan / 注意总体规划 496
Conclusion / 结束语 499
Appendix: The Use of Patterns in This Book / 附录:本书中模式的使用 507
Glossary / 术语表 511
References / 参考文献 515
Photo Credits / 图片说明 517
Part I Putting the Domain Model to Work / 运用领域模型 1
Chapter 1: Crunching Knowledge / 消化知识 7
Ingredients of Effective Modeling / 有效建模的要素 12
Knowledge Crunching / 知识消化 13
Continuous Learning / 持续学习 15
Knowledge-Rich Design / 知识丰富的设计 17
Deep Models / 深层模型 20
Chapter 2: Communication and the Use of Language / 交流与语言的使用 23
UBIQUITOUS LANGUAGE 24
Modeling Out Loud /“大声地”建模 30
One Team, One Language / 一个团队,一种语言 32
Documents and Diagrams / 文档和图 35
Written Design Documents / 书面设计文档 37
Executable Bedrock / 完全依赖可执行代码的情况 40
Explanatory Models / 解释性模型 41
Chapter 3: Binding Model and Implementation / 绑定模型和实现 45
MODEL-DRIVEN DESIGN 47
Modeling Paradigms and Tool Support / 建模范式和工具支持 50
Letting the Bones Show: Why Models Matter to Users / 揭示主旨:为什么模型对用户至关重要 57
HANDS-ON MODELERS 60
Part II The Building Blocks of a Model-Driven Design / 模型驱动设计的构造块 63
Chapter 4: Isolating the Domain / 分离领域 67
LAYERED ARCHITECTURE 68
Relating the Layers / 将各层关联起来 72
Architectural Frameworks / 架构框架 74
The Domain Layer Is Where the Model Lives / 领域层是模型的精髓 75
THE SMART UI “ANTI-PATTERN” / THE SMART UI“反模式” 76
Other Kinds of Isolation / 其他分离方式 79
Chapter 5: A Model Expressed in Software / 软件中所表示的模型 81
Associations / 关联 82
ENTITIES(A.K.A. REFERENCE OBJECTS)/
ENTITY(也称为REFERENCE OBJECT) 89
Modeling ENTITIES / ENTITY建模 93
Designing the Identity Operation / 设计标识操作 94
VALUE OBJECTS 97
Designing VALUE OBJECTS / 设计VALUE OBJECT 99
Designing Associations That Involve VALUE OBJECTS / 设计包含VALUE OBJECT的关联 102
SERVICES 104
SERVICES and the Isolated Domain Layer / SERVICE与孤立的领域层 106
Granularity / 粒度 108
Access to SERVICES / 对SERVICE的访问 108
MODULES(A.K.A. PACKAGES)/ MODULE(也称为PACKAGE) 109
Agile MODULES / 敏捷的MODULE 111
The Pitfalls of Infrastructure-Driven Packaging / 通过基础设施打包时存在的隐患 112
Modeling Paradigms / 建模范式 116
Why the Object Paradigm Predominates / 对象范式流行的原因 116
Nonobjects in an Object World / 对象世界中的非对象 119
Sticking with MODEL-DRIVEN DESIGN When Mixing Paradigms /在混合范式中坚持使用MODEL-DRIVEN DESIGN 120
Chapter 6: The Life Cycle of a Domain Object / 领域对象的生命周期 123
AGGREGATES 125
FACTORIES 136
Choosing FACTORIES and Their Sites / 选择FACTORY及其应用位置 139
When a Constructor Is All You Need / 有些情况下只需使用构造函数 141
Designing the Interface / 接口的设计 143
Where Does Invariant Logic Go /
固定规则的相关逻辑应放置在哪里 144
ENTITY FACTORIES Versus VALUE OBJECT FACTORIES / ENTITY FACTORY与VALUE OBJECT FACTORY 144
Reconstituting Stored Objects / 重建已存储的对象 145
REPOSITORIES 147
Querying a REPOSITORY / REPOSITORY的查询 152
Client Code Ignores REPOSITORY Implementation; Developers Do Not / 客户代码可以忽略REPOSITORY的实现,但开发人员不能忽略 154
Implementing a REPOSITORY / REPOSITORY的实现 155
Working Within Your Frameworks / 在框架内工作 156
The Relationship with FACTORIES / 与FACTORY的关系 157
Designing Objects for Relational Databases / 为关系数据库设计对象 159
Chapter 7: Using the Language: An Extended Example / 使用语言:一个扩展的示例 163
Introducing the Cargo Shipping System / 货物运输系统简介 163
Isolating the Domain: Introducing the Applications / 隔离领域:引入应用层 166
Distinguishing ENTITIES and VALUE OBJECTS / 将ENTITY和VALUE OBJECT区别开 167
Designing Associations in the Shipping Domain / 设计运输领域中的关联 169
AGGREGATE Boundaries / AGGREGATE边界 170
Selecting REPOSITORIES / 选择REPOSITORY 172
Walking Through Scenarios / 场景走查 173
Sample Application Feature: Changing the Destination of a Cargo / 应用程序特性举例:更改Cargo的目的地 173
Sample Application Feature: Repeat Business / 应用程序特性举例:重复业务 173
Object Creation / 对象的创建 174
FACTORIES and Constructors for Cargo / Cargo的FACTORY和构造函数 174
Adding a Handling Event / 添加Handling Event 175
Pause for Refactoring: An Alternative Design of the Cargo AGGREGATE / 停一下,重构:Cargo AGGREGATE 的另一种设计 177
MODULES in the Shipping Model / 运输模型中的MODULE 179
Introducing a New Feature: Allocation Checking / 引入新特性:配额检查 181
Connecting the Two Systems / 连接两个系统 182
Enhancing the Model: Segmenting the Business / 进一步完善模型:划分业务 183
Performance Tuning / 性能优化 185
A Final Look / 小结 186
Part III Refactoring Toward Deeper Insight / 通过重构来加深理解 187
Chapter 8: Breakthrough / 突破 193
Story of a Breakthrough / 一个关于突破的故事 194
A Decent Model, and Yet . . . / 华而不实的模型 194
The Breakthrough / 突破 196
A Deeper Model / 更深层模型 198
A Sobering Decision / 冷静决策 199
The Payoff / 成果 200
Opportunities / 机遇 201
Focus on Basics / 关注根本 201
Epilogue: A Cascade of New Insights / 后记:越来越多的新理解 202
Chapter 9: Making Implicit Concepts Explicit /
将隐式概念转变为显式概念 205
Digging Out Concepts / 概念挖掘 206
Listen to Language / 倾听语言 206
Scrutinize Awkwardness / 检查不足之处 210
Contemplate Contradictions / 思考矛盾之处 216
Read the Book / 查阅书籍 217
Try, Try Again / 尝试,再尝试 219
How to Model Less Obvious Kinds of Concepts /
如何为那些不太明显的概念建模 219
Explicit Constraints / 显式的约束 220
Processes as Domain Objects / 将过程建模为领域对象 222
SPECIFICATION 224
Applying and Implementing SPECIFICATION / SPECIFICATION的应用和实现 227
Chapter 10: Supple Design / 柔性设计 243
INTENTION-REVEALING INTERFACES 246
SIDE-EFFECT-FREE FUNCTIONS 250
ASSERTIONS 255
CONCEPTUAL CONTOURS 260
STANDALONE CLASSES 265
CLOSURE OF OPERATIONS 268
Declarative Design / 声明式设计 270
A Declarative Style of Design / 声明式设计风格 273
Angles of Attack / 切入问题的角度 282
Carve Off Subdomains / 分割子领域 283
Draw on Established Formalisms, When You Can / 尽可能利用已有的形式 283
Chapter 11: Applying Analysis Patterns / 应用分析模式 293
Chapter 12: Relating Design Patterns to the Model / 将设计模式应用于模型 309
STRATEGY (A.K.A. POLICY) / STRATEGY(也称为POLICY) 311
COMPOSITE 315
Why Not FLYWEIGHT / 为什么没有介绍FLYWEIGHT 320
Chapter 13: Refactoring Toward Deeper Insight / 通过重构得到更深层的理解 321
Initiation / 开始重构 321
Exploration Teams / 探索团队 322
Prior Art / 借鉴先前的经验 323
A Design for Developers / 针对开发人员的设计 324
Timing / 重构的时机 324
Crisis as Opportunity / 危机就是机遇 325
Part IV Strategic Design / 战略设计 327
Chapter 14: Maintaining Model Integrity / 保持模型的完整性 331
BOUNDED CONTEXT 335
CONTINUOUS INTEGRATION 341
CONTEXT MAP 344
Testing at the CONTEXT Boundaries / 测试CONTEXT的边界 351
Organizing and Documenting CONTEXT MAPS / CONTEXT MAP的组织和文档化 351
Relationships Between BOUNDED CONTEXTS / BOUNDED CONTEXT之间的关系 352
SHARED KERNEL 354
CUSTOMER/SUPPLIER DEVELOPMENT TEAMS 356
CONFORMIST 361
ANTICORRUPTION LAYER 364
Designing the Interface of the ANTICORRUPTION LAYER / 设计ANTICORRUPTION LAYER的接口 366
Implementing the ANTICORRUPTION LAYER / 实现ANTICORRUPTION LAYER 366
A Cautionary Tale / 一个关于防御的故事 370
SEPARATE WAYS 371
OPEN HOST SERVICE 374
PUBLISHED LANGUAGE 375
Unifying an Elephant /“大象”的统一 378
Choosing Your Model Context Strategy / 选择你的模型上下文策略 381
Team Decision or Higher / 团队决策或更高层决策 382
Putting Ourselves in Context / 置身上下文中 382
Transforming Boundaries / 转换边界 382
Accepting That Which We Cannot Change: Delineating the External Systems / 接受那些我们无法更改的事物:描述外部系统 383
Relationships with the External Systems / 与外部系统的关系 384
The System Under Design / 设计中的系统 385
Catering to Special Needs with Distinct Models / 用不同模型满足特殊需要 386
Deployment / 部署 387
The Trade-off / 权衡 388
When Your Project Is Already Under Way / 当项目正在进行时 388
Transformations / 转换 389
Merging CONTEXTS: SEPARATE WAYS SHARED KERNEL / 合并CONTEXT:SEPARATE WAY → SHARED KERNEL 389
Merging CONTEXTS: SHARED KERNEL CONTINUOUS INTEGRATION / 合并CONTEXT:SHARED KERNEL → CONTINUOUS INTEGRATION 391
Phasing Out a Legacy System / 逐步淘汰遗留系统 393
OPEN HOST SERVICE → PUBLISHED LANGUAGE 394
Chapter 15: Distillation / 精炼 397
CORE DOMAIN 400
Choosing the CORE / 选择CORE 402
Who Does the Work / 工作的分配 403
An Escalation of Distillations / 精炼的逐步提升 404
GENERIC SUBDOMAINS 406
Generic Doesn’t Mean Reusable / 通用不等于可重用 412
Project Risk Management / 项目风险管理 413
DOMAIN VISION STATEMENT 415
HIGHLIGHTED CORE 417
The Distillation Document / 精炼文档 418
The Flagged CORE / 标明CORE 419
The Distillation Document as Process Tool / 把精炼文档作为过程工具 420
COHESIVE MECHANISMS 422
GENERIC SUBDOMAIN Versus COHESIVE MECHANISM / GENERIC SUBDOMAIN与COHESIVE MECHANISM的比较 424
When a MECHANISM Is Part of the CORE DOMAIN / MECHANISM是CORE DOMAIN一部分 425
Distilling to a Declarative Style / 通过精炼得到声明式风格 426
SEGREGATED CORE 428
The Costs of Creating a SEGREGATED CORE / 创建SEGREGATED CORE的代价 429
Evolving Team Decision / 不断发展演变的团队决策 430
ABSTRACT CORE 435
Deep Models Distill / 深层模型精炼 436
Choosing Refactoring Targets / 选择重构目标 437
Chapter 16: Large-Scale Structure / 大型结构 439
EVOLVING ORDER 444
SYSTEM METAPHOR 447
RESPONSIBILITY LAYERS 450
KNOWLEDGE LEVEL 465
PLUGGABLE COMPONENT FRAMEWORK 475
How Restrictive Should a Structure Be / 结构应该有一种什么样的约束 480
Refactoring Toward a Fitting Structure / 通过重构得到更适当的结构 481
Minimalism / 最小化 481
Communication and Self-Discipline / 沟通和自律 482
Restructuring Yields Supple Design / 通过重构得到柔性设计 482
Distillation Lightens the Load / 通过精炼可以减轻负担 483
Chapter 17: Bringing the Strategy Together / 领域驱动设计的综合运用 485
Combining Large-Scale Structures and BOUNDED CONTEXTS / 把大型结构与BOUNDED CONTEXT结合起来使用 485
Combining Large-Scale Structures and Distillation / 将大型结构与精炼结合起来使用 488
Assessment First / 首先评估 490
Who Sets the Strategy / 由谁制定策略 490
Emergent Structure from Application Development / 从应用程序开发自动得出的结构 491
A Customer-Focused Architecture Team / 以客户为中心的架构团队 492
Six Essentials for Strategic Design Decision Making / 制定战略设计决策的6个要点 492
The Same Goes for the Technical Frameworks / 技术框架同样如此 495
Beware the Master Plan / 注意总体规划 496
Conclusion / 结束语 499
Appendix: The Use of Patterns in This Book / 附录:本书中模式的使用 507
Glossary / 术语表 511
References / 参考文献 515
Photo Credits / 图片说明 517
猜您喜欢