IDDD 5 Entity

<< 实现领域驱动设计 >> 五: 实体

实体是有着生命周期的领域对象,拥有唯一标识。


img

MindMapping Source:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
* 实体
** 为什么使用?
*** 唯一的身份标识
*** 生命周期
(可变性,状态变化)
** 唯一标识
*** 生成方式
(从简单到复杂)
**** 用户提供
***** 用户手动输入
复杂性:在于需要用户自己生成高质量的标识
**** 应用程序生成
***** UUID
Universally Unique Identifier
***** GUID
Globally Unique Identifier
**** 持久化机制生成
***** DB 自增列机制
**** 另一个限界上下文提供
*** 标识生成时间
**** 对象创建时
**** 持久化对象时
*** 委派标识
**** 层超类型
Layer Supertype
*** 标识稳定性
**** 确保标识不被修改
** 发现实体
*** 本质特征
*** 关键行为
*** 角色和职责
**** 领域对象扮演多种角色
***** 通常用接口来定义
****** 隐藏细节
**** 领域语言优于技术实现
*** 创建实体
**** 提供构造函数来初始化实体状态
*** 验证
**** 目的
***** 检查模型正确性
**** 验证属性
***** 自封装
Self-Encapsulation)
**** 验证整体
***** 规格
Specification
***** 策略模式
(Strategy)
***** 延迟验证
(Deferred Validation)
**** 验证对象组合
*** 跟踪变化
**** 领域事件
**** 事件存储