因此,让我们说我们有一些实体,我们想要使用DAO对象持久化。因此,我们实施正确的接口,这样我们结束了DAO设计模式
class JdbcUserDao implements UserDao{
//...
}
class JdbcAddressDao implements AddressDao{
//...
}
所以,如果我希望能够从JDBC切换持久化实现以JPA(例如),反之亦然,我需要有JPAUserDao和JPAAddressDao ...如果我有20个实体,并决定切换实现(使用DI容器),那么我必须用代码中的JPA切换每个Jdbc实现。
现在它可能是我误会了DAO是如何工作的,但是......如果我只是
class JdbcDaoImpl implements UserDao,AddressDao{
//...
}
我会再有所有的JDBC实现在一类,和开关实现将是一块的蛋糕。此外,DaoImpl计数等于Dao接口的数量。为什么不通过实现(jdbc,JTA,JPA ...)对它们进行分组并将所有内容都放在一个类中?
在此先感谢。
同样的原因,你不编写你的应用程序到一个大的'主()'方法:分离关注。 (顺便提一句,没有人会阻止你编写一个包含公共代码的抽象'JdbcDaoBase'并将其扩展到你的'Dao') – rsp 2012-03-31 09:59:51
为什么要更换一个类中的500个方法比100个类更容易? – 2014-02-01 16:09:13