У меня есть проект, реализованный в (некорректной) 3-уровневой архитектуре. Моя работа заключается в том, чтобы сделать его более общим, чтобы было легко добавить новую базу данных в проект.
Конкретный: для базы данных SQL существует databaseFacade, и мне нужно сделать его более универсальным, чтобы мы могли очень легко добавить несколько баз данных. В этом случае запись в файл CSV.
Моя идея на уровне базы данных состояла в том, чтобы создать интерфейс, в котором определены все методы. Затем наличие фасада базы данных (в зависимости от того, что вы хотите использовать), реализующего этот интерфейс, чтобы он стал более универсальным.
Тогда у меня есть какой-то класс DBmanager. Этот класс DBmanager будет считывать файл конфигурации, чтобы он знал, какую базу данных использовать. На основе этой информации он создаст экземпляр интерфейса и вернет его на прикладной уровень.
Однако здесь я не знаю, прав ли я. Уровень приложения теперь имеет класс DBmanager (где все правильно инкапсулировано, только один метод является общедоступным для возврата фасада), и после этого DBfacade.
Есть мысли о правильности этого? Так как у меня есть сомнения.