10

我一直在使用存儲庫模式(DDD和POEAA)一段時間。然而,我們的一些團隊成員認爲這只是一個額外的抽象層,並且是不必要的。 我可以在他們的論點中看到一些好處。現代的ORM解決方案(NHibernate或EF)幾乎擁有您所需的一切。我搜索並找到了一些關於此主題的文章,如thiscounterargument。所以庫模式是一個矯枉過正的?存儲庫模式過度衝擊

回答

12

這主要取決於問題的複雜性以及域模型在解決方案中扮演的角色。對於簡單的解決方案,Repository可能是矯枉過正的。但對於具有強大語言和不斷髮展的需求/需求的複雜領域,存儲庫是一個非常好的,乾淨的抽象,它擁有域對象生命週期。許多ORM將做大部分工作,但是,在一個複雜的領域中,始終存在一些在存儲庫中有意義的域活動,並且ORM不支持這種活動。

底線:它取決於上下文。

+9

你永遠不會因'它取決於'而出錯。 :) – 2010-08-09 21:26:52

+0

@Arnis - 這就是爲什麼,作爲開發人員,我們不只是錘子,我們有一個完整的工具箱。 – Martin 2011-02-15 17:31:06

+5

@Martin有些只有膠帶:) – 2011-02-16 10:16:11

4

在單元測試中模擬數據訪問是我使用存儲庫接口的主要原因。可維護性的另一個原因 - 您可以輕鬆實現緩存策略,或切換到其他數據訪問實現,如從服務而不是數據庫獲取數據。

1

我們在我們的項目中使用存儲庫的一個原因是,它強制實施我們的總根(我們只允許AR的存儲庫),以便正確地處理AR,而不是查詢任何可能影響您的想法。

正如Al提到的那樣..它確實提供了一個很好的界面,可以在單元測試中進行模擬。