2009-07-13 108 views
2

可以從聚合中獲取只讀集合而無需通過根來獲取它嗎?我的模型現在做了一些這個,我想知道這是否是一個可接受的設計。由於繞過聚合根

編輯:

下面是一個例子

我有一個叫做UserAccount的聚合根實體和另一個名爲VideoStore聚合根。用戶可以擁有多個商店,而視頻商店可以擁有多個用戶。非常基本的多對多,但這不是因爲多對多橋表包含狀態信息,所以它也必須是一個實體。所以,我有一個名爲UserVideoStores的橋實體,它是聚合根VideStore(一對多)的一個子實體。

現在,當用戶登錄時,我想查找他們分開的哪些VideoStores並向他們顯示該信息。我可以通過使UserAccount實體具有對聚合根VideoStores的子視圖UserVideoStores的直接引用(一對多)來輕鬆完成此操作。這似乎更容易做到這一點,然後必須使用HQL查詢並從圖的底部搜索,以查找用戶分開的哪些存儲。

這有道理嗎?

編輯:

那麼我想出了一個解決方案,使我的模型更清潔。我沒有直截了當地思考我的一些設計,並且我學會了如何更好地使用nHibernate來幫助我提出解決方案。由於

+0

你能舉個例子嗎? – Paco 2009-07-13 20:19:19

回答

2

埃文斯說:「根是骨料的唯一成員是外的物體被允許持有引用......」(第127頁)

我的理解是,總應顯示爲一個單元到外面的物體。另外,Law of Demeter似乎適用。底線,我不認爲這是可以接受的。

+0

是的,你說得對。我用這種設計打破了一些法律。我可能需要閱讀埃文的DDD書。這可能會幫助我很多。謝謝 – CalebHC 2009-07-14 00:07:17

2

其實Eric已經改變了他對集合根規則嚴格性的看法。
他最近說了一些沿線的東西

「讓傢伙冷靜下來,如果你真的需要規則,是的,和平。「

參見: 「埃裏克·埃文斯:因爲這本書我已經瞭解DDD」 http://dddcommunity.org/library/evans_2009_1