Я пытаюсь настроить уровень доступа к базе данных, с которым можно общаться, скажем, SQL db, а также некоторые базы данных noSQL.Я имею в виду один интерфейс, такой как IDataManager, который будет иметь общие функции, такие как GetData (), putData (), addTable (), dropTable (), а также оба БД могут иметь индивидуальную функциональность, как БД noSQL позволяет вставлять данные из XML или плоскихи т. д. Как мне реализовать фабричную логику или логику доступа для этой иерархии в моем клиентском коде?
interface IdataManager
{
getData();
putData();
addTable();
dropTable();
}
class NoSQLManager : Idatamanager
{
//implements all common functions
getData();
putData();
addTable();
dropTable();
//also declares some additional ones
putDatausingXML();
}
class SQLManager : Idatamanager
{
//implements all common functions
getData();
putData();
addTable();
dropTable();
//also declares some additional ones
putDatausinglocaltable();
}
//Now in my code to access above DAL logic , lets say I create a simple factory
class dataAccessFactory
{
IdataManager getDataManager(int id)
{
dataManager dm = null;
if(id==1)
dm = new NoSQLManager();
else if(id==2)
dm = new SQLManager();
return dm;
}
}
Logic to access above factory :
dataAccessFactory daf = new dataAccessFactory ();
IdataManager noSqlObj = daf.getDataManager(1);
noSqlObj.putDatausingXML(); //problem this wont work.
Я хочу иметь доступ к дополнительным функциям, таким как putDatausingXML, а также к обычнымтакие функции, как getData () с использованием noSqlObj
Но используя данное наследование и логику, я смогу получить доступ только к функциям, входящим в базовый интерфейс IdataManager.