1、what
1.1、在DDD中,DP 是 一切模型、方法、架构的基础;
(类似于 编程语言中的 Integer、String...)
1.2、在一个特定的领域里,拥有 精准定义、可自我验证、拥有行为 value object;
2、原则:
2.1、Make Implicit Concepts Explicit
(将 隐形的 概念 显性化)
2.2、Make Implicit Context Explicit
(将 隐形的 上下文 显性化)
2.3、Encapsulate Multi-Object Behavior
(封装 多对象 行为)
3、diff:
3.1、与 Value Object 区别:
value object:
更多的是一个 非entity的 值对象;
DP:
在VO的基础上,要求每个DP拥有概念的整体(不仅仅是 值对象);
在VO的immutable基础上,增加了Validate 、行为;
3.2、与 Data Transfer Object 区别:
4、when(什么场景使用DP?)
4.1、有格式限制的String:
eg:Name、PhoneNumber、OrderNumber...
4.2、有限制的Integer:
eg:OrderId(>0)、Percentage(0-100%)...
4.3、可枚举的int:
eg:Status...
4.4、Double或BigDecimal:
eg:Money、Amount、Rating...
4.5、复杂的数据结构:
eg:Map<String,List<Integer>>...尽量将Map的操作包装掉,仅暴露必要行为;
Domain Driven Design---Domain Primitive
原文:https://www.cnblogs.com/anpeiyong/p/14330469.html