У меня есть эта проблема:
В C # я делаю программу, которая должна подключаться к различным базам данных (SQLite, SQL Server Compact, 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 и т. Д.? Они также меняются, и я должен добавить больше классов.
Спасибо,
Трав