![]() |
1
6
我想归根结底就是你想做什么。如果这是一种验证步骤(例如,删除所有项目类型已过期的项目),您可能会认为它属于服务层或规范。从您使用的语言(即“确定要添加的实体”)来看,它似乎建议使用后者,但如果没有更多的细节,就很难说了。 我想从某种角度来看,你不能这样做没有真正的原因(我绝对不是超级DDD最纯粹的),特别是因为一个项目和它的类型可以被视为一个聚合根,并且它只是你需要提供一个管理控制台来防止的实现细节。 从另一个角度来看,它确实表明你的聚合根之间存在模糊,这可能表明两个不同的上下文正在工作。例如,有人可能会争辩说,管理工具为您的主应用程序形成了一个单独的有界上下文,因此项目类型是聚合根的情况并不真正适用。例如,管理工具可能只关注项目类型(而不是项目),而主应用程序可能将项目类型视为比实体更重要的值对象。 更新 正如您提到的组装文档一样,这似乎是一个工厂类的责任,它可以正确地组装一个有效的实体(工厂可以使用图像类型存储库)。存储库(在我看来)应该公开查询和添加操作,而不是配置实体的逻辑(可能是由于持久性而重新水化)。 |
![]() |
Stephen L. · 轻量级聚合和存储库 11 年前 |