我目前正在尝试将领域驱动设计原则应用于我的开发实践。我一直致力于如何为按层次结构组织的数据定义聚合根。
我们以文件夹结构为例 - 每个文件夹可以有 0..N 个子文件夹,子文件夹 0..N 也可以有 0..N 个子文件夹,依此类推。
我对文件夹及其所有直接和间接子文件夹有不变量 - 删除文件夹应导致删除其所有子文件夹
这是否是 DDD 有效的方法,让我们说聚合根“文件夹层次结构”,其中包含 1 个“文件夹”实体(这将是该文件夹层次结构的“标题”文件夹),并且每个文件夹实体有 0..N 个文件夹实体(子-文件夹)
这是有效的 DDD 吗?这样会有效果吗?因为我读到 DDD 主张拥有小聚合,但这个“文件夹层次结构”可能是一个巨大的聚合......
具有深层层次结构的聚合根在 DDD 中是否合适? https://stackoverflow.com/questions/13647490/is-aggregate-root-with-deep-hierarchy-appropriate-in-ddd
Vaughn Vernon 的有效聚合设计 http://dddcommunity.org/library/vernon_2011/
有什么建议可以让 DDD 有效且有效吗?
EDIT
让我们看一个具有树状结构的对象的稍微不同的示例。假设我需要开发一个任务跟踪系统,并且该系统需要任务具有非固定级别的子任务 - 所有任务从功能/行为角度来看都是相同的 - 每个任务可以有 0..1 个父任务和 0 个任务。 .N个子任务。
Having Task
作为聚合根(及其所有子任务层次结构)不会遵循 DDD 建议来拥有小聚合 - 对吗?
什么是好的设计Task
根据 DDD 原则?以及如何在 a 上实现不变量Task
(及其子任务层次结构)如果Task
(及其层次结构)不是一个聚合?