我一直在遵循DDD原则(遵循Eric Evans关于这个主题的书)但是我最近开始重新阅读这本书,并注意到我似乎偏离了repositories
的一个原则。
“对于需要全局访问的每种类型的对象,请创建一个对象 这可以提供内存收集的错觉......“
我误解了这一点,因为我为每个 repository
创建了一个aggregate
,并且发现这很适合我。即使aggregate
本身与另一个aggregate
相关联,也只是在创建repository
期间(通常在工厂内)引用相关聚合entity
的简单问题。 / p>
我发现这样做的好处是在我的存储库中执行缓存等操作时。它还真正简化了对象创建/持久性与域之间的鸿沟。
有人可以举个例子说明这种“全球访问”不适合帮助我理解我出错的地方。
答案 0 :(得分:0)
我相信你使用了错误的术语......聚合不能包含其他聚合。您可能在这些聚合之间存在关联。
在任何情况下,每个聚合都应该有存储库,否则你做错了。此外,最好使用存储库来加载聚合而不是来自其他聚合的关联。如果你保持联系(可能是因为你的ORM很容易)你没有完全拆分聚合。