领域驱动设计(DDD)笔记(一)

最近在看《领域驱动设计》这本书,准备写点学习笔记博文记录系列。记录本书中的要点和疑惑,不定期更新!先放张MarginNote的图:Aggregate每个Aggr

  最近在看《领域驱动设计》这本书,准备写点学习笔记博文记录系列。记录本书中的要点和疑惑,不定期更新!先放张MarginNote的图:

Aggregate

 每个Aggregate 都有一个根(Root)和一个边界(boundary)。边界定义了Aggregate 的内部都有什么,根则是Aggregate 中所包含的一个特定 Entity。在Aggregate 中,根是唯一允许外部对象保持对它的引用的元素,而边界内部的对象之间则可以互相引用。除根以外的其他Entity 都有本地标识,但这些标识只有在 Aggregate 内部才需要加以区分,因为外部对象除了根Entity 外看不到其他对象。
PS: 在自己的项目中,好像都没看到Aggregate?难道是我的Aggregate 用其他形式表现出来了?
下面是一个关于“汽车的轮胎和汽车之间的一个例子”

Aggregate的固定规则

建议:

 将 Entity 和Value Object 分门别类放到Aggregate 中,并定义每个 Aggregate 的边界。在每个Aggregate 中,选择一个Entity 作为根,并通过根来控制对边界内其他对象的所有访问。只保持外部对象保持对根的引用。对内部成员的临时引用可以被传递出去,但仅在一次操作中有效。由于根控制访问,因此不能绕过它来修改对象。