限界上下文拥有从展现层到领域逻辑层,再到持久化,甚至到数据存储功能的垂直切片,那么产品的概念可以存在每个限界上下文中,并且包含仅对该上下文普遍存在的特性和逻辑。任何限界上下文中的变化不再具有对其他有界上下文的影响,因为限界上下文或子域是隔离的。限界上下文具备概念上的独立性,一个限界上下文内的子概念的解释和目的都不应该超出上下文的边界,若出现以下依赖关系,需要思考是否存在未澄清的问题:
a. 双向依赖:上下文之间缺少一层未被澄清的上下文,或者两个上下文其实可被合为一个;
b. 循环依赖:任何一个上下文发生变更,依赖链条上的上下文均需要改变;
c. 过长的依赖:自身依赖的信息不能直接从依赖者获取到,需要通过依赖者从其依赖的上下文获取并传递,依赖链 路过长,依赖链条上的任何一个上下文发生变更,其链条后的任何一个上下文均可能需要改变。
扩展:我们在整个战术设计的过程中,利用奥卡姆剃刀原理(是指如无必要,勿增实体,即“简单有效原理”)的思想,引入DP(Domain Primitive 是 Value Object 的进阶版,在原始 VO 的基础上要求每个DP拥有概念的整体,而不仅仅是值对象)并把实体属性归类,为 VO 的 Immutable 基础上增加了 Validity 和无状态行为,防止将过多的属性拍平到实体。