Итак, скажем, у нас есть пара объектов, которые мы хотим сохранить с помощью объектов DAO. Таким образом, мы реализуем правый интерфейс, поэтому в итоге получаем
class JdbcUserDao implements UserDao{
//...
}
class JdbcAddressDao implements AddressDao{
//...
}
Итак, если я хочу, чтобы можно было переключать реализации устойчивости с JDBC на JPA (например) и наоборот, мне нужно было бы JPAUserDao и JPAAddressDao... Смысл, если бы у меня было 20 объектов и решил переключать реализации (используя контейнер DI), мне пришлось бы переключать каждую реализацию Jdbc с помощью JPA в коде.
Теперь может случиться так, что я неправильно понял, как работает DAO, но... Если бы я просто
class JdbcDaoImpl implements UserDao,AddressDao{
//...
}
Тогда у меня были бы все реализации JDBC в одном классе, и реализация реализации была бы частью торта. Кроме того, количество DaoImpl равно числу интерфейсов Dao. Почему бы просто не группировать их по реализации (jdbc, JTA, JPA...) и иметь все под одним классом?
Спасибо заранее.