【发布时间】:2011-05-23 23:10:36
【问题描述】:
这是对另一个问题的跟进:Bypassing Aggregate Root。
这个问题的作者询问在他的示例中是否可以接受绕过聚合根。我有同样的问题,但针对不同的用例。
我们的网络应用程序有一个后台,我们可以在其中编辑属于聚合根的所有项目:
- 产品(聚合根)
- 选项
- 选项项
等等
由于产品不是以批次的形式创建的,因此我们在单独的屏幕中逐个编辑聚合根中的每个实体。
由于我们处于无状态系统中,因此我们需要在 URL 参数中唯一标识我们要处理的实体。
这意味着,例如,我们将根据其id 获取和编辑选项,而不是从根目录浏览。
恕我直言,为每个人都有一个存储库更有意义,然后这样做:
$optionRepository->find($optionId);
而不是类似的东西:
foreach ($product->options as $option) {
if ($option->id == $optionId) {
// ok, we finally found it, we can now work on it
// ...
break;
}
}
这是否打破了领域驱动设计中聚合根的概念?在这种情况下,我将非常感谢学习正确的方法。
【问题讨论】:
标签: orm domain-driven-design repository repository-pattern aggregateroot