我正在设计领域模型,但有些东西似乎不太好。
我从一个主要的聚合开始。它引用了其他聚合,而其他聚合也引用了更多聚合。我可以从主聚合开始遍历孔域模型。
我看到的问题是我将在内存中保存聚合的所有实例。
这是一个好的设计吗?我可以通过延迟加载解决内存问题,但我认为我有一个更深层次的问题。
我还有一个关于汇总参考文献的问题。我应该延迟加载对其他聚合的引用吗?如果是这样的话,我几乎永远不会使用他们的存储库。这可以吗?
在聚合根 (AR) 之间直接引用可能会导致延迟加载无法解决的问题。此外,它强制所有连接的 AR 位于同一个数据库中,并使推理和强制执行不变量变得更加困难,而这正是 AR 的主要目的。最好限制或消除 AR 之间的直接引用。了解聚合设计的一个很好的资源是系列文章 http://dddcommunity.org/library/vernon_2011 by 沃恩·弗农 https://twitter.com/vaughnvernon。基本思想是让您的 AR 精益且专注,同时牢记其功能 - 实施业务约束并围绕根实体建立边界。如果 AR 需要来自另一个 AR 的数据来执行其工作,则应用程序服务可以通过存储库向其提供该数据。此外,如果仅需要引用来满足 UI 要求,那么请考虑使用读取模型模式 http://gorodinski.com/blog/2012/04/25/read-models-as-a-tactical-pattern-in-domain-driven-design-ddd/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)