Domain-Driven design:tackling complexity in the heart of software

副标题:无

作   者:(美)Eric Evans著;陈大峰,张泽鑫等译

分类号:

ISBN:9787302115762

微信扫一扫,移动浏览光盘

简介

  [font color="#ff6600"]“每个有思想的软件开发者的书架上都应该有这样一本书”——kent beck    “eric设法收集了经验丰富的对象设计人员一直使用的一些设计过程,作为一个团队的人们在这些过程中却没能够成功地完成剩下的工作。人们将知识弄得支离破碎……却从来没有将建立领域逻辑的原则组织起来并使其系统化。这本书是非常重要的。”—— kyle brown,《enterprise java programming with ibm websphere》的作者。[/font]       本书涉及的主题具体包括:    ●隔离领域●实体、值对象、服务和模块●一个领域对象的生命周期●将过程表示为领域对象●创建没有副作用的函数●总体轮廓●独立的类●扩展说明●应用分析模式●将设计模式与模型相联系●维护模型的完整性●设计领域前景声明●选择重构目标●职责层次●创建可插入的组件框架●结合大比例结构与界限上下文       本书为读者系统地介绍了领域驱动的设计方法。书中介绍了大量优秀的设计示例、基于经验的技术以及促进处理复杂领域的软件开发的基本原则。本书将设计和开发实践相结合,在介绍领域驱动设计时,还提供了大量的java示例,这些例子都是从实际中提取出来的,展示了领域驱动设计在软件开发中的实际应用。 通过对本书的阅读,读者将获得对领域驱动设计的总体认识,了解领域驱动设计中涉及的关键原则、术语和推断。本书介绍的经验和标准模式将为开发团队提供一种通用语言。另外,书中还介绍了如何在领域模型中进行重构,如何与敏捷开发进行集成,如何获得对领域更深的认识并增进领域专家和程序员之间的交流等。并在此基础上,介绍了在复杂系统和较大组织中进行的领域驱动设计。

目录

第ⅰ部分 让领域模型发挥作用.

第1章 消化知识 5

1.1 有效建模的因素 9

1.2 知识消化 10

1.3 持续学习 11

1.4 知识丰富的设计 12

1.5 深层模型 15

第2章 交流及语言的使用 17

2.1 通用语言 17

2.2 利用对话改进模型 22

2.3 一个团队,一种语言 24

2.4 文档和图 25

2.4.1 书面的设计文档 27

2.4.2 执行的基础 29

2.5 说明性模型 29

第3章 将模型和实现绑定 32

3.1 模型驱动设计 33

3.2 建模范型和工具支持 36

3.3 突出主旨:为什么模型对用户很关键 41

3.4 实践型建模人员 43

.第ⅱ部分 模型驱动设计的构建块

第4章 分离领域 47

4.1 分层架构 47

4.1.1 层间的联系 51

4.1.2 架构框架 51

4.2 模型属于领域层 52

4.3 其他种类的隔离 55

第5章 软件中的模型描述 56

5.1 关联 57

5.2 实体(又称引用对象) 62

5.2.1 实体建模 65

5.2.2 设计标识操作 66

5.3 值对象 68

5.3.1 设计值对象 71

5.3.2 设计包含值对象的关联 73

5.4 服务 74

5.4.1 服务和分隔的领域层 75

5.4.2 粒度 77

5.4.3 访问服务 77

5.5 模块(包) 77

5.5.1 敏捷的模块 79

5.5.2 基础结构驱动打包的缺陷 80

5.6 建模范式 82

5.6.1 对象范式的优势 82

5.6.2 对象世界中的非对象 84

5.6.3 在混合范式中使用模型驱动设计 85

第6章 领域对象的生命周期 87

6.1 聚合 88

6.2 工厂 96

6.2.1 工厂及其应用场所的选择99

6.2.2 只需构造函数的情况 101

6.2.3 接口的设计 102

6.2.4 如何放置不变量的逻辑 103

6.2.5 实体工厂与值对象工厂 103

6.2.6 存储对象的重建 103

6.3 仓储 105

6.3.1 查询仓储 109

6.3.2 了解仓储实现的必要性 111

6.3.3 实现仓储 111

6.3.4 在框架内工作 113

6.3.5 与工厂的关系 113

6.4 为关系数据库设计对象 115

第7章 使用语言:扩展示例 117

7.1 货物运输系统概述 117

7.2 隔离领域:系统简介 119

7.3 区分实体和值对象 120

7.4 运输领域中的关联设计 121

7.5 聚合的边界 123

7.6 选择仓储 124

7.7 场景概述 125

7.7.1 应用特性示例:改变一件货物的目的地126

7.7.2 应用特性示例:重复业务126

7.8 对象的创建 126

7.8.1 cargo的工厂和构造函数 126

7.8.2 添加一个handling event127

7.9 停下来重构:cargo聚合的另一种设计 129

7.10 运输模型中的模块 131

7.11 引入新特性:配额检查 133

7.11.1 连接两个系统 134

7.11.2 改进模型:划分业务 135

7.11.3 性能调整 137

7.12 小结 137

第ⅲ部分 面向更深层解的重构

第8章 突破 143

8.1 关于突破的故事 144

8.1.1 中看不中用的模型 144

8.1.2 突破 146

8.1.3 更深层的模型 148

8.1.4 冷静的决定 149

8.1.5 成效 150

8.2 时机 150

8.3 着眼于根本 151

8.4 尾声:一连串的新理解 151

第9章 隐含概念转变为显式概念 153

9.1 概念挖掘 153

9.1.1 倾听表达用语 154

9.1.2 检查不协调之处 157

9.1.3 研究矛盾之处 162

9.1.4 查阅书籍 162

9.1.5 尝试,再尝试 164

9.2 如何建模不太明显的概念 164..

9.2.1 显式的约束 165

9.2.2 作为领域对象的流程 167

9.2.3 规格 168

9.2.4 规格的应用和实现 171

第10章 柔性设计 184

10.1 释意接口 186

10.2 无副作用函数 190

10.3 断言 194

10.4 概念轮廓 197

10.5 孤立类 201

10.6 操作封闭 203

10.7 声明性设计 205

10.8 一个声明性风格的设计 207

10.9 攻击角度 215

10.9.1 切分子领域 215

10.9.2 尽可能利用现成的形式 216

第11章 应用分析模式 225

第12章 把设计模式和模型联系起来 237

12.1 策略 238

12.2 组合 241

12.3 为什么不用flyweight? 245

第13章 向更深层理解重构 247

13.1 发起重构 247

13.2 探索团队 248

13.3 前期工作 249

13.4 针对开发人员设计 249

13.5 时机选择 250

13.6 将危机视为机会 250

第ⅳ部分 战略性设计

第14章 维护模型完整性 255

14.1 限界上下文 257

14.2 持续集成 261

14.3 上下文映射 263

14.3.1 在上下文边界上的测试 269

14.3.2 组织和文档化上下文映射 269

14.4 限界上下文之间的关系 270

14.5 共享内核 271

14.6 顾客/供应商开发团队 272

14.7 同流者 275

14.8 防腐层 277

14.8.1 设计防腐层的接口 279

14.8.2 实现防腐层 279

14.8.3 一个关于警戒的故事 282

14.9 隔离方式 282

14.10 开放主机服务 284

14.11 公布语言 284

14.12 盲人摸象 287

14.13 选择模型上下文的策略 290

14.13.1 团队或更高层的决策 290

14.13.2 把自己放在上下文中 291

14.13.3 转换边界 291

14.13.4 接受我们不能改变的东西:描绘外部系统 292

14.13.5 与外部系统的关系 292

14.13.6 在设计系统 293

14.13.7 满足不同模型的特别需要 293

14.13.8 部署 294

14.13.9 权衡 295

14.13.10 考虑项目已经进行的情况 295

14.14 转换 296

14.14.1 合并上下文:隔离方式→共享内核 296

14.14.2 合并上下文:共享内核→持续集成 297

14.14.3 逐步淘汰原有系统 298

14.14.4 开放主机服务→公布语言 299

第15章 精炼 301

15.1 核心领域 302

15.1.1 选择核心 305

15.1.2 谁来负责精炼工作 305

15.2 精炼的逐步升级 306

15.3 通用子域 307

15.3.1 通用不一定可重用 312

15.3.2 项目风险管理 313

15.4 领域愿景声明 313

15.5 突出核心 315

15.5.1 精炼文档 316

15.5.2 把核心标记出来 317

15.5.3 把精炼文档作为开发过程的工具 318

15.6 内聚机制 319

15.6.1 通用子域与内聚机制 320

15.6.2 属于核心领域的机制 321

15.7 精炼到声明性风格 321

15.8 隔离核心 322

15.8.1 创建隔离核心的代价 323

15.8.2 推进团队决策 323

15.9 抽象核心 328

15.10 深层模型精炼 329

15.11 选择重构的目标 329

第16章 大比例结构 330

16.1 渐进顺序 333

16.2 系统隐喻 335

16.3 职责层 337

16.4 知识级别 349

16.5 插件框架 356

16.6 结构的约束 360

16.7 重构到合适的结构 361

16.7.1 最小化 362

16.7.2 交流和自律 362

16.7.3 结构重组产生柔性设计 362

16.7.4 精炼为开发指路 363

第17章 综合应用战略性设计 364

17.1 大比例结构和限界上下文的结合 364

17.2 大比例结构和精炼的结合 367

17.3 首先进行评估 369

17.4 由谁制定策略 369

17.4.1 在开发过程中自发产生 369

17.4.2 以客户为中心的架构团队 370

17.5 制定战略性设计决策的6个要点 370

17.5.1 技术框架同样如此 373

17.5.2 提防总体规划 374

第18章 尾声 375

附录a 关于模式 380

附录b 术语表 383

附录c 参考文献 387

附录d 关系图 389 ...


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Domain-Driven design:tackling complexity in the heart of software
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon