負載實現我有這樣的問題:基於參數
在C#我在做應該連接到各種數據庫(SQLite的,SQL Server精簡的MS Access等)的程序。我在app.config中設置了一個名爲「dbType」的參數(它可以是1代表SQLlite,2代表SQL Server Compact,3代表MS Access等)。這個參數應該在程序運行的時候由用戶修改,用下拉菜單或者類似的東西。
然後程序讀取此參數並創建與所選數據庫相對應的數據庫接口(IDatabase)實現的實例。
的代碼是:
class ObjectDatabaseCreator
{
protected ObjectDatabase objectDb;
protected Object objectDAO;
protected int dbType;
protected String dbName;
public ObjectDatabaseCreator()
{
}
public ObjectDatabaseCreator(String dbName)
{
this.dbType = ObjectConfiguration.getDbType();
this.dbName = dbName;
}
public ObjectDatabase getObjectDatabase()
{
//1 - SQLite; 2-SQLServer Compact; 3-SQLServer Express; 4-MS Access
switch (dbType)
{
case 1:
objectDb = new ObjectDatabase(new Database_Impl_1(dbName));
break;
case 2:
objectDb = new ObjectDatabase(new Database_Impl_2(dbName));
break;
case 3:
objectDb = new ObjectDatabase(new Database_Impl_3(dbName));
break;
case 4:
objectDb = new ObjectDatabase(new Database_Impl_4(dbName));
break;
}
return objectDb;
}
}
嗯,看來工作,但我想知道是否有可能使其更容易添加其他的數據庫,我的意思是,是否會有另一個數據庫我應該修改這個類,重新編譯等。
我怎麼能實例化BLL類的其他實現,比方說Person,Customer等?這些也改變了,我應該增加更多的課程。
感謝, 狀育苗
感謝大家的快速解答。 – trav 2011-02-18 12:23:30