第一部分 背景知识
第1章 应重视的价值,也是对过去几年的沉重反思
1.1 总体价值
1.2 应重视的架构风格
1.2.1 焦点之一:模型
1.2.2 焦点之二:用例
1.2.3 如果重视模型,就可以使用领域模型模式
1.2.4 慎重处理数据库
1.2.5 领域模型与关系数据库之间的阻抗失配
1.2.6 谨慎处理分布式
1.2.7 消息传递很重要
1.3 对过程的各个组成部分的评价
1.3.1 预先架构设计
1.3.2 领域驱动设计
1.3.3 测试驱动开发
1.3.4 重构
1.3.5 选择一种还是选择组合
1.4 持续集成
1.4.1 解决方案(或至少是正确方向上的一大步)
1.4.2 从我的组织汲取的教训
1.4.3 更多信息
1.5 不要忘记运行机制
1.5.1 有关何时需要运行机制的一个例子
1.5.2 运行机制的一些例子
1.5.3 它不仅仅是我们的过错
1.6 小结
第2章 模式起步
2.1 模式概述
2.1.1 为什么要学习模式
2.1.2 在模式方面要注意哪些事情
2.2 设计模式
2.3 架构模式
2.3.1 示例:层
2.3.2 另一个示例:领域模型模式
2.4 针对具体应用程序类型的设计模式
2.5 领域模式
2.6 小结
第3章 TDD与重构
3.1 TDD
3.1.1 TDD流程
3.1.2 演示
3.1.3 设计效果
3.1.4 问题
3.1.5 下一个阶段
3.2 模拟和桩
3.2.1 典型单元测试
3.2.2 声明独立性
3.2.3 处理困难因素
3.2.4 用测试桩替换协作对象
3.2.5 用模拟对象替换协作对象
3.2.6 设计含义
3.2.7 结论
3.2.8 更多信息
3.3 重构
3.4 小结
第二部分 应用DDD
第4章 新的默认架构
4.1 新的默认架构的基础知识
4.1.1 从以数据库为中心过渡到以领域模型为中心
4.1.2 进一步关注DDD
4.1.3 根据DDD进行分层
4.2 轮廓
4.2.1 领域模型示例的问题/特性
4.2.2 逐个处理特性
4.2.3 到目前为止的领域模型
4.3 初次尝试将UI与领域模型挂接
4.3.1 基本目标
4.3.2 简单UI的当前焦点
4.3.3 为客户列出订单
4.3.4 添加订单
4.3.5 刚才我们看到了什么
4.4 另一个维度
4.4.1 领域模型的位置
4.4.2 孤立或共享的实例
4.4.3 有状态或无状态领域模型实例化
4.4.4 领域模型的完整实例化或子集实例化
4.5 小结
第5章 领域驱动设计进阶
5.1 通过简单的TDD实验来精化领域模型
5.1.1 从Order和OrderFactory的创建开始
5.1.2 一些领域逻辑
5.1.3 第二个任务:OrderRepository+OrderNumber
5.1.4 重建持久化的实体:如何从外部设置值
5.1.5 获取订单列表
5.1.6 该到讨论实体的时候了
5.1.7 再次回到流程上来
5.1.8 总览图
5.1.9 建立OrderRepository的伪实现
5.1.10 简单讨论一下保存
5.1.11 每个订单的总量
5.1.12 历史客户信息
5.1.13 实例的生命周期
5.1.14 订单类型
5.1.15 订单的介绍人
5.2 连贯接口
5.3 小结
第6章 准备基础架构
6.1 将POCO作为工作方式
6.1.1 实体和值对象的PI
6.1.2 是否使用PI
6.1.3 运行时与编译时PI
6.1.4 PI实体/值对象的代价
6.1.5 将PI用于存储库
6.1.6 单组存储库的代价
6.2 对保存场景的处理
6.3 建立伪版本机制
6.3.1 伪版本机制的更多特性
6.3.2 伪版本的实现
6.3.3 影响单元测试
6.4 数据库测试
6.4.1 在每次测试之前重置数据库
6.4.2 在测试运行期间保持数据库的状态
6.4.3 测试之前重置测试所使用的数据
6.4.4 不要忘记不断演变的模式
6.4.5 分离单元测试和数据库调用测试
6.5 查询
6.5.1 单组查询对象
6.5.2 单组查询对象的代价
6.5.3 将查询定位到哪里
6.5.4 再次将聚合作为工具
6.5.5 将规格用于查询
6.5.6 其他查询选择
6.6 小结
第7章 应用规则
7.1 规则的分类
7.2 规则的原则及用法
7.2.1 双向规则检查:可选的(可能的)主动检查,必需的(和自动的)被动检查
7.2.2 所有状态(即使是错误状态)都应该是可保存的
7.2.3 规则应该高效使用
7.2.4 规则应该是可配置的,以便添加自定义规则
7.2.5 规则应与状态放在一起
7.2.6 规则应该具有很高的可测试性
7.2.7 系统应阻止我们进入错的状态
7.3 开始创建A
1