领域驱动设计 软件核心复杂性应对之道 英文版

领域驱动设计 软件核心复杂性应对之道 英文版
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Eric Evans)
2020-09
版次: 1
ISBN: 9787115542946
定价: 99.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 517页
字数: 1千字
  • 本书是领域驱动设计方面的经典之作。全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。本书共分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
  • 内容简介:
    本书是领域驱动设计方面的经典之作。全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。本书共分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
查看详情
您可能感兴趣 / 更多
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计:软件核心复杂性应对之道(英文版)
[美]埃文斯 著
领域驱动设计 软件核心复杂性应对之道 英文版
领域知识工程学
罗建中 编
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计学习手册
[以色列]弗拉德·霍诺诺夫(Vlad Khononov)
领域驱动设计 软件核心复杂性应对之道 英文版
领域特定语言
[美]马丁·福勒(Martin Fowler)
领域驱动设计 软件核心复杂性应对之道 英文版
领域专用语言实战
[美]Debasish Ghosh
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计与模式实战
[瑞典]Jimmy Nilsson 著
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计.Net实践
甄镭
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计精粹
Vernon(沃恩弗农) 著;[美]Vaughn、覃宇 笪磊 译
领域驱动设计 软件核心复杂性应对之道 英文版
领域语义信息检索研究——以竹藤领域为例
彭琳 著
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计:软件核心复杂性应对之道
[美]伊文斯(Evans E.) 著;陈大峰、张泽鑫 译
领域驱动设计 软件核心复杂性应对之道 英文版
领域自适应目标检测方法与应用
叶茂;唐宋;李旭冬
领域驱动设计 软件核心复杂性应对之道 英文版
领域法学社会科学的新思维与法学共同体的新融合
刘剑文 著
系列丛书 / 更多
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计:软件核心复杂性应对之道(英文版)
[美]埃文斯 著
领域驱动设计 软件核心复杂性应对之道 英文版
领域知识工程学
罗建中 编
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计学习手册
[以色列]弗拉德·霍诺诺夫(Vlad Khononov)
领域驱动设计 软件核心复杂性应对之道 英文版
领域特定语言
[美]马丁·福勒(Martin Fowler)
领域驱动设计 软件核心复杂性应对之道 英文版
领域专用语言实战
[美]Debasish Ghosh
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计与模式实战
[瑞典]Jimmy Nilsson 著
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计.Net实践
甄镭
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计精粹
Vernon(沃恩弗农) 著;[美]Vaughn、覃宇 笪磊 译
领域驱动设计 软件核心复杂性应对之道 英文版
领域语义信息检索研究——以竹藤领域为例
彭琳 著
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计:软件核心复杂性应对之道
[美]伊文斯(Evans E.) 著;陈大峰、张泽鑫 译
领域驱动设计 软件核心复杂性应对之道 英文版
领域自适应目标检测方法与应用
叶茂;唐宋;李旭冬
领域驱动设计 软件核心复杂性应对之道 英文版
领域法学社会科学的新思维与法学共同体的新融合
刘剑文 著
相关图书 / 更多
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计:软件核心复杂性应对之道(英文版)
[美]埃文斯 著
领域驱动设计 软件核心复杂性应对之道 英文版
领域知识工程学
罗建中 编
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计学习手册
[以色列]弗拉德·霍诺诺夫(Vlad Khononov)
领域驱动设计 软件核心复杂性应对之道 英文版
领域特定语言
[美]马丁·福勒(Martin Fowler)
领域驱动设计 软件核心复杂性应对之道 英文版
领域专用语言实战
[美]Debasish Ghosh
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计与模式实战
[瑞典]Jimmy Nilsson 著
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计.Net实践
甄镭
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计精粹
Vernon(沃恩弗农) 著;[美]Vaughn、覃宇 笪磊 译
领域驱动设计 软件核心复杂性应对之道 英文版
领域语义信息检索研究——以竹藤领域为例
彭琳 著
领域驱动设计 软件核心复杂性应对之道 英文版
领域驱动设计:软件核心复杂性应对之道
[美]伊文斯(Evans E.) 著;陈大峰、张泽鑫 译
领域驱动设计 软件核心复杂性应对之道 英文版
领域自适应目标检测方法与应用
叶茂;唐宋;李旭冬
领域驱动设计 软件核心复杂性应对之道 英文版
领域法学社会科学的新思维与法学共同体的新融合
刘剑文 著