【发布时间】:2013-09-18 15:56:14
【问题描述】:
我一直在遵循 DDD 原则(遵循 Eric Evans 关于该主题的书)但是我最近开始重新阅读这本书并注意到我似乎偏离了 repositories 的原则之一...
"对每一种需要全局访问的对象,创建一个对象 这可以提供内存中集合的错觉......”
我偏离了这一点,因为我为每个 aggregate 创建了一个repository,并发现这很适合我。即使aggregate 本身与另一个aggregate 关联,在创建entity 期间(通常在工厂内)引用关联聚合的repository 也是一件简单的事情。
我发现这样做的好处是在我的存储库中执行诸如缓存之类的操作时。它还真正简化了对象创建/持久性与域之间的划分。
谁能给我一个例子说明这种“全球访问”不适合帮助我了解我哪里出错了。
【问题讨论】:
-
全局访问意味着只有聚合根可以被系统的其他部分引用,而本地实体不能。这旨在保护不变量。如果有人想修改本地实体,他/她必须通过检索聚合并使用它来修改实体来做到这一点,因此不变量(由聚合提供)是有保证的。
-
+1 “全局访问”定义了聚合根,而不是只有根才能访问的简单实体。此外,您提到了包含聚合的聚合。这在 DDD 中是非常不典型的,如果不是不鼓励的话。
-
您能否再澄清一下您的问题?例如,“我哪里出错了”是什么意思?有代码吗?
标签: java domain-driven-design ddd-repositories