Рассмотрите возможность использования контейнера внедрения зависимостей (например, Spring Framework для получения ссылок на предварительно настроенные экземпляры ваших DAO или других видов служб. Например, в Spring вы можете написать XML-файл, определяющий DAO, обращающиеся к базе данных Oracle, и другой файл. определение DAO, обращающихся к другому поставщику базы данных: просто разверните с соответствующей версией, и ваше приложение заработает.
Также 2 вещи:
1) в то время как намерение шаблона DAO стремится абстрагировать любой тип источника данных (базы данных, веб-службы, файла свойств и т. Д.), Его использование обычно связано только с доступом к базе данных. Любой другой слой доступа к источнику данных, вы можете определить его как «сервисный» объект.
2) В качестве дополнительного комментария, если вы не планируете развернуть свое приложение для использования различных источников данных (сейчас или в обозримом будущем), то нет смысла вводить объект фабрики, плюс общий интерфейс DAO для каждый DAO.