【发布时间】:2011-05-19 05:16:25
【问题描述】:
如果我的领域模型不应该知道/关心存储库,那么像 .UpdateOrder(...) 这样封装了 CRUD-Update 的行为如何与存储库接口?通过域服务?
好的,那么我的存储库有一个有效的 CRUD 更新,它与我的 .UpdateOrder(...) 一起使用。没关系。但我不希望有人在存储库上使用 Update 方法,我希望他们通过实体上的行为(改用 UpdateOrder() )。我更喜欢与我的领域模型满足不变量的方式相似 - 通过它的设计(私有集属性等) - 我的存储库 not 公开另一种方法来“更新”/持久化实体。
这只是一个访问修饰符问题,我在 Repo public 中没有 Update 方法即可解决。还是有“更好”的答案?请帮助我 DDD 忍者。
【问题讨论】:
-
UpdateOrder 是做什么的,它需要什么样的参数?它是用实体中的值更新持久存储吗?
-
UpdateOrder 是业务模型的一种行为。它需要什么或做什么并不重要,只是它封装了域逻辑,最后它需要保持更改的状态。
标签: domain-driven-design entity separation-of-concerns ddd-repositories domainservices