2010-10-13 70 views
1

尋找關於使用聚合根的一些說明。使用DDD中的聚合體

如果我有一個模型(問題文件)如下;

試卷--->問題--->答

,我已經確定了試卷是一個聚合根,如果我要選擇一個問題一個答案我必須把公衆方法,或者我可以從根暴露問題,並在QUESTION對象上放置一個公共方法來選擇ANSWER?

回答

2

一般而言,您總是希望與您的聚合根聊天。如果你正在讀取值,那麼有時候可以方便地將公共訪問器添加到聚集根內部的聚合中,但它非常快速地變得很難(例如Demeter法則,打破抽象等),並且我建議你不要做到這一點。

但是,對於任何改變狀態的東西,重要的是你總是經歷聚合根。聚合根表示一致性邊界(即,它直接或間接地負責將事物保持在有效狀態),並且如果允許狀態更改,則完全繞過這一點,從而爲日益增加的複雜性打開大門。

因此,這取決於您在問題中選擇'您'的意思 - 如果您要查詢,那麼您可以避開它,但這是一個壞主意。如果您正在更改狀態,請不要這樣做,否則您的聚合根目錄不再是聚合根目錄。

+0

感謝您的回覆。這就是我的直覺,'選擇'我的意思是我最終改變了答案對象的狀態。再次感謝。 – David 2010-10-27 09:27:18