2016-06-15 152 views
2

基於下面的URL,存儲庫的圖案基本上是存儲庫對象的層,其用於封裝數據的訪問:存儲庫模式變化?

http://martinfowler.com/eaaCatalog/repository.html

例如,UserRepository對象將具有GetUsers()方法是這樣

public User GetUsers() 
{ 
    return context.Users; 
} 

這是所有存在的存儲庫模式還是有更多的呢?這種模式是否有任何已命名的變體?例如,我想我曾經遇到過一個人,他聲稱這種模式涉及實體的通用/動態CRUD。例如,由於CRUD是一個基本和可重複的模式,存儲庫模式將爲任何/所有實體動態提供CRUD功能。我猜想是這樣的:new Repository()。Read()。有沒有這個Repository模式的變體名稱?

回答

0

存儲庫模式僅僅是關於與特定數據存儲實現的分離。 CRUD絕對適合這個保護傘,通常情況下是這樣。

最重要的是要準確決定哪些業務對象需要哪些操作。你不需要公開所有的CRUD操作。

這是一篇非常不錯的文章,其中包含標準存儲庫模式實現的示例代碼。因人而異。 http://www.codeproject.com/Articles/526874/Repository-pattern-done-right

+0

謝謝。你知道我在我的帖子中描述的其他模式的名稱嗎?:var users = new Repository ().ReadAll()雖然Repository模式可能不是最好的,但我確信它可以用一個或多個設計模式來描述描述它的方式。總而言之,該實現基於所有實體將共享通用/可重複CRUD方法的某個子集的事實。 – user6411982

+0

ReadAll()或GetAll()仍然適合Repository Pattern的保護範圍。你甚至可以適應具有諸如GetWhere(謂詞)或類似查詢參數的方法。 –

+0

關於我最後的評論,我將其稱爲「動態存儲庫」模式,除非其他人能夠識別與此實現相關的更正式的設計模式 – user6411982