负载实现我有这样的问题:基于参数
在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