我想了解領域驅動設計的基礎知識。昨天我在一個項目中發現了一些代碼,Repository返回了一個實體列表,即List getMessages(),其中Message是一個實體(有自己的id並且是可修改的)。現在,在閱讀關於DDD中的存儲庫時,他們非常具體地指出存儲庫應該返回聚合根,並且聚合上的任何操作都應該通過調用聚合根中的方法來完成。DDD是否允許列表爲聚合根?
我想將List放在自己的類中,然後返回該類。但是,在我的項目中,除了符合DDD外,基本上不需要這樣做,因爲我們只顯示消息,添加新消息或刪除現有消息。我們永遠不會刪除所有消息,所以我們唯一的方法是,addMessage(...)
,getMessages()
,updateMessage(...)
和removeMessage(...)
這基本上是我們的域服務正在做的。
任何想法的人?在描述聚集和存儲庫時,DDD的最佳實踐是什麼?
當然,Repository不應該返回Aggregate Root,它應該總是隻返回一個引用,指向默認的Aggregate Root。但謝謝你的回覆,它確實有幫助。現在我已經買了埃裏克埃文斯的書,所以我會做一些進一步的研究。 – 2011-02-22 08:40:13