我刚刚开始使用DDD,而我在弄清楚如何适应数据的关系性质方面遇到了一些麻烦。我有我认为会被视为我的聚合根,但聚合也有自己的聚合。我不想违反德米特法则,我想知道我是否正在考虑这个错误,并希望一些DDD专家可以提供一些见解。
我的聚合根是我的Account
对象,它有多个AccountElement
实体的聚合,这些实体本身就是各个ProductComponent
实体的逻辑分组。
在AccountElement
的上下文之外的Account
没有意义,所以我对我的结论感到满意,Account
对象是我的聚合根,我期待那个实体具有聚合Elements
属性。这是我感到困惑的ProductComponent
集合。此聚合在AccountElement
之外没有任何意义,而真的在Account
之外没有任何意义。
我认为我不应该通过点击它来访问单个ProductComponent
对象,例如:
var reference = account.Elements(0).ProductComponents(0).ReferenceCode;
但与此同时,从域名角度来看,直接从ProductComponent
实体访问Account
是没有意义的。
我确信在不了解我的域名的情况下理解这一点有点难以理解,但我希望这足以获得一些好的反馈。
答案 0 :(得分:2)
罗伯特与之相关的文章很好。我想补充一点,如果ProductComponent仅存在于AccountElement的上下文中,并且AccountElement仅存在于Account的上下文中,则扩展ProductComponent位于Account的上下文中。