dao中存在是接口(interface)
dao.impl中存在的是接口的具体实现(class)
至于好处,去查查接口的定义。
更新。。。。
举个例子
dao中有
public interface UserDAO {
public List getUser();
}
dao.imple中
public class JdbcUserDao implements UserDAO{
@Override
public List getUser() {
//do sth.
return null;
}
}
在往后的某一天,需要用hibernate来操作数据库的时候。
只要写一个 HibernateUserDao来实现UserDAO就行了。
接口定义的是规范。并不关心具体实现。
我的github上有一份自己对java各种关键字做的总结,其中关于接口在设计方面的描述是:
接口作为系统与外界交互的窗口,接口体现是一种规范。对于接口的实现者而言,接口规定了实现者必须向外提供哪些服务(以方法的形式来提供);对于接口调用者
而言,接口规定了调用者可以调用哪些服务,以及如何调用这些服务(就是如何来调用方法的)。当一个程序中使用接口时,接口是多个模块之间的耦合标准;当多
个应用程序之间使用时,接口时多个程序之间的通信标准。
从某种程度来说,接口类型整个系统中的“总纲”,它制定了系统之间各个模块应该遵循的标准,因此一个系统中的接口不应该经常改变。一旦接口改变,对整个系统
甚至其他系统的影响将是辐射式的,导致系统中大部分类需要重写。