因此,讓我們說我們有一些實體,我們想要使用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