最近在进行java基础的总结,简单答一波(好像是我在知乎涉及专业知识的第一答,答的不好望批评指教)
1.接口是一种规范
它规定了凡是使用了此接口的类,必须实现其定义的方法
好处:协同开发时更加高效,开发出的代码更加规范.(代码即文档思想)
2.降低耦合
给一个简单的例子: DAO层的接口设计(我之前写过的Mybaits的一个例子,不要在意代码实现细节,关注结构)
你需要准备三个文件
DepartmentDAO.java
public interface DepartmentDAO {
/**
* 获取所有部门
* @return
*/
public List getAllDepartment();
}
DepartmentDAOImp.java
public class DepartmentDAOImp implements DepartmentDAO{
@Override
public List getAllDepartment() {
SqlSession session = MyBatisUtil.getSqlSession();
String statement = "com.hwtblog.empssm.pojo.DepartmentMapper.getDeps";
List list = session.selectList(statement);
return list;
}
}
DAOFactory.java
public class DAOFactory {
/**
* 获取DepartmentDAO
* @return
*/
public static DepartmentDAO getDepartmentDAO(){
return new DepartmentDAOImp();
}
}
那么我们如果想要”获取全部部门数据”,应该如何编写程序呢?
@Test
public void getAllDepartment() {
List depList = DAOFactory.getDepartmentDAO().getAllDepartment();
System.out.println(depList);
}
关键语句:DAOFactory.getDepartmentDAO().getAllDepartment();
那么这么设计的好处是什么呢?
现在考虑:
如果我们不想用Mybatis框架了,我们想用JDBC来直接实现这个功能,并且可以实现两者直接的切换,那该怎么办?
我们可以搞一个DepartmentDAOImpByJDBC.java,里面去实现这个接口,同时将
DAOFactory.java中的getDepartmentDAO()方法的返回值改为
”new DepartmentDAOImpByJDBC();”
3.便于分工合作
当然这也是解耦的一个优点吧
还是上面这个例子,我们可以轻松的实现几种不同的方式读取数据库内容,我们可以把这些工作分配给不同的人去开发,最终我们只需要把他们写好的DepartmentDAOImpByXXX.java拷贝到我们的包中,即可使用他们的成果了.