2010-10-13 45 views
1

寻找关于使用聚合根的一些说明。使用DDD中的聚合体

如果我有一个模型(问题文件)如下;

试卷--->问题--->答

,我已经确定了试卷是一个聚合根,如果我要选择一个问题一个答案我必须把公众方法,或者我可以从根暴露问题,并在QUESTION对象上放置一个公共方法来选择ANSWER?

回答

2

一般而言,您总是希望与您的聚合根聊天。如果你正在读取值,那么有时候可以方便地将公共访问器添加到聚集根内部的聚合中,但它非常快速地变得很难(例如Demeter法则,打破抽象等),并且我建议你不要做到这一点。

但是,对于任何改变状态的东西,重要的是你总是经历聚合根。聚合根表示一致性边界(即,它直接或间接地负责将事物保持在有效状态),并且如果允许状态更改,则完全绕过这一点,从而为日益增加的复杂性打开大门。

因此,这取决于您在问题中选择'您'的意思 - 如果您要查询,那么您可以避开它,但这是一个坏主意。如果您正在更改状态,请不要这样做,否则您的聚合根目录不再是聚合根目录。

+0

感谢您的回复。这就是我的直觉,'选择'我的意思是我最终改变了答案对象的状态。再次感谢。 – David 2010-10-27 09:27:18