我有兩個類用一個方法編碼到單個接口IStore StoreData(data) - 一個類將數據發送到寫入到數據庫的Web服務,另一個類將數據直接寫入到D B。 (工廠模式)工廠模式:將參數傳遞給具體類
public IStore GetStorageClass(StorageType type)
{
if (type == StorageType.WebService)
return new WebService();
else
return new DatabaseStore();
}
現在,DatabaseStore類需要一個連接字符串才能工作。 問題是,誰的責任是提供連接字符串到DatabaseStore以及如何?我認爲:
工廠才知道連接字符串傳遞給DatabaseStore
的DatabaseStore構造從終端用戶提供了配置讀取它。
GetStorageClass的來電顯示,雖然不知道確切的落實,通過參數和值,其中的參數是連接字符串詞典(調用者知道使用數據庫需要連接字符串)
哪個選項我應該選擇並在這裏正確使用工廠模式嗎? 感謝幫助!
謝謝凱文。因此,在這種情況下,FactoryProvider類(包含GetCtorageClass)將成爲'director'並實例化一個特定於數據庫的構建器來創建DatabaseStore?儘管如此,構建器的配置(連接字符串)最終需要由FactoryProvider給出,對吧? – 2013-03-13 01:15:56
這樣考慮:這是FactoryProvider FactoryProvider(DatabaseStoreBuilder dsb)的一個構造函數{this.dataStoreBuilder = dsb; }現在,在GetStorageClass中,DatabaseStore的情況是this.dataStoreBuilder.InitializeDataStore();您傳入的DatabaseStoreBuilder類是使用連接字符串構建的。 FactoryProvider不需要自己構建構建器。 – Kevin 2013-03-13 04:11:09