2013-08-02 32 views
1

這是一個非常簡單的示例來演示一個問題。雖然我只在這裏顯示兩個域對象,但想象還有更多不同的參數。對多個域對象和多個存儲機制使用IRepository模式

比方說,我有以下的域對象:

public class Object1 
{ 
    public string Identifier { get; set; } 
    public string Name { get; set; } 
} 

public class Object2 
{ 
    public string Identifier { get; set; } 
    public int ItemValue { get; set; } 
} 

典型的實現Repository模式將有一個Object1Repository和Object2Repository其中每個實現了一些IRepository接口,可能包括諸如ADDOBJECT,DeleteObject的,GetObjectByIdentifier方法等等...然後,存儲庫將知道如何與數據庫交互以執行建議的方法。

這一切都很好,我很多次都以這種方式使用了Repository模式。現在我遇到了一個問題,我擁有多種不同的存儲機制; Oracle,SQLServer,文本文件和XML文件。支持這個想法的最佳設計方法是什麼?存儲庫的存儲庫?基本上我試圖實現的是讓多個不同的對象能夠存儲到多個不同的存儲介質,我試圖將存儲庫模式應用於這個想法。

我正在編寫C#代碼,但我也可以閱讀大多數其他語言,因此建議的方法不一定必須是C#。

回答

2

請參考How would I design a repository to handle multiple data access strategies?,我想這就是你想要的。

基本上假設你已經有一個IRepository接口,它具有CRUD方法和其他通用方法在你所有其他的存儲庫中引用,那麼你有多個實現到IRepository接口。

之後,使用任何IOC容器(我使用溫莎城堡)來解決哪個實現的組件應該參與進行應用程序設置的這個接口。

+0

+1。另外,如果您不想使用IoC容器,則可以使用普通的舊式AbstractFactory來切換實現。 – tallseth

+0

完美。我試圖在發佈這個問題之前進行搜索,我似乎沒有找到這個鏈接的問題。感謝您抽出寶貴的時間。 – meyousikmann