这是对另一个问题的跟进:绕过聚合根。
这个问题的作者询问在他的示例中是否可以接受绕过聚合根。我有同样的问题,但针对不同的用例。
我们的 Web 应用程序有一个后台,我们可以在其中编辑属于聚合根的所有项目:
- 产品(聚合根)
- 选项
- 选项项目
等等
因为一个产品不是在一个批次中创建的,它的所有选项,我们在一个单独的屏幕中一个一个地编辑聚合根中的每个实体。由于我们处于无状态系统中,因此我们需要在 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;
}
}
这是否打破了领域驱动设计中聚合根的概念?在这种情况下,我将非常感谢学习正确的方法。