发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

为什么DAO设计时要写成接口而不是抽象类?

2013-09-25 16:56
赞助商链接

在JAVA EE中,我们设计DAO的时候,发现所有的项目都是写成接口形式,然后使用具体的DAO对象去实现这个接口,如:
public interface GenericDao<T> {
public List<T> findByID(Long id);
}
class UserDao implements GenericDao<User> {
@Override
public List<User> findByID(Long id) {
return null;
}
}

我的问题是:为什么DAO不采用抽象类的方式来写呢?
我个人认为DAO的设计可以采用抽象类的方式来做,如:
public abstract class GenericDao<T> {
public abstract List<T> findByID(Long id);
}
class UserDao extends GenericDao<User> {
@Override
public List<User> findByID(Long id) {
return null;
}
}

因为抽象类与子类的关系属于"is-a",而接口代表的是“协议”。
有些人说使用接口是为了避免只能单继承,我觉得这个说法不够说服力,请大家帮我解答一下,谢谢!

2013-09-26 08:35

可以采取抽象类,Spring的JDBCtemp或HibernateTemp等都是使用模板抽象类。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com