更新时间:2021-04-15 12:16:54
封面
版权页
前言
第一部分 概念
第1章 DDD的关键概念
1.1 自顶而下、逐步求精
1.1.1 DDD开创全新分析流派
1.1.2 什么是软件的核心复杂性
1.2 什么是领域模型
1.3 战术层面的关键概念
1.3.1 实体
1.3.2 值对象
1.3.3 聚合与聚合根、聚合内部实体
1.3.4 聚合的整体与局部
1.3.5 聚合是数据修改的单元
1.3.6 聚合分析是“拆分”的基础
1.3.7 服务
1.4 战略层面的关键概念
1.4.1 限界上下文
1.4.2 限界上下文与微服务
1.4.3 防腐层
1.4.4 统一语言
1.5 ER模型、OO模型和关系模型
1.6 概念建模与模型范式
第2章 其他DDD相关概念
2.1 领域ID
2.1.1 自然键与代理键
2.1.2 DDD实体的ID需要被最终用户看到
2.1.3 什么时候使用代理键
2.2 ID、Local ID与Global ID
2.3 命令、事件与状态
第3章 CQRS与Event Sourcing
3.1 命令查询职责分离
3.2 事件溯源
3.3 From-Thru模式
3.3.1 示例:ProductPrice
3.3.2 示例:PartyRelationship
3.4 CQRS、ES与流处理
第二部分 设计
第4章 DDD的DSL是什么
4.1 为什么DDD需要DSL
4.1.1 为什么实现DDD那么难
4.1.2 搞定DDD的“锤子”在哪里
4.2 需要什么样的DSL
4.2.1 在“信仰”上保持中立
4.2.2 DDD原生
4.2.3 在复杂和简单中平衡
4.2.4 通过DSL重塑软件开发过程
4.3 DDDML——DDD的DSL
4.3.1 DDDML的词汇表
4.3.2 DDDML的Schema
4.4 DDDML示例:Car
4.4.1 “对象”的名称在哪里
4.4.2 使用两种命名风格:camelCase与PascalCase
4.4.3 为何引入关键字itemType
第5章 限界上下文
5.1 DDDML文档的根结点下有什么
5.2 限界上下文的配置
5.3 名称空间
5.3.1 再谈PascalCase命名风格
5.3.2 注意两个字母的首字母缩写词
5.4 关于模块
第6章 值对象
6.1 领域基础类型
6.1.1 例子:从OFBiz借鉴过来的类型系统
6.1.2 例子:任务的触发器
6.2 数据值对象
6.3 枚举对象
第7章 聚合与实体
7.1 用同一个结点描述聚合及聚合根
7.2 实体之间只有一种基本关系
7.3 关于实体的ID
7.4 不变的实体
7.5 动态对象
7.6 继承与多态
7.6.1 使用关键字inheritedFrom
7.6.2 超对象
7.7 引用
7.7.1 定义实体的引用
7.7.2 属性的类型与引用类型
7.8 基本属性与派生属性
7.8.1 类型为实体集合的派生属性
7.8.2 类型为值对象的派生属性
7.9 约束
7.9.1 在实体层面的约束
7.9.2 在属性层面的约束
7.10 提供扩展点
第8章 超越数据模型
8.1 实体的方法
8.1.1 聚合根的方法
8.1.2 非聚合根实体的方法
8.1.3 属性的命令
8.1.4 命令ID与请求者ID
8.2 记录业务逻辑
8.2.1 关于accountingQuantityTypes
8.2.2 关于derivationLogic
8.2.3 关于filter
8.2.4 使用关键字referenceFilter
8.2.5 业务逻辑代码中的变量
8.2.6 说说区块链