今天给大家介绍的是面向接口编程:

首先需要知道为什么要面向接口编程,会给我们带来什么好处,在写这篇文章之前,我也看过很多博客跟帖子上的介绍,不过说句实话讲解的很一般,其实面向接口编程的最主要两个字在接口上,接口带来的好处就是降低耦合性(解耦);可能一些人不太了解这个词,我来用一个实例做介绍:

现在我有两个类代码如下

public class Dao{

  public User findByName(String username){

    //这个方法实现的是去excel中查找username这个用户

  }

  public void addUser(User form){//这是一个向excel写入的数据(当然你要熟悉poi技术,如果是xml就需要熟悉dom4技术),添加用户的方法实现}

}

public class Service{

  Dao  dao = new Dao();

  public void login(User form){//这是一个模拟的登录方法依赖的是Dao类中的两个方法}

}

如果现在我们公司决定不在使用excel作为数据存储设备,而是换成效率更高的数据库;

其实问题大家都知道了,如果要修改代码,我们就需要重新做测试,这会消耗很大的成本,那么我们就需要在不修改代码的基础上完成需求;

从而引出了Spring之父的理念面向接口编程,即InterfaceDao  dao = new Dao();即使这样大家还是发现代码还是死的,还需要去new对象,虽然这个接口InterfaceDao{

  findByName(String username);

  addUser(User form);

}有了,但是仍然没有满足我们的需要;

这里给大家介绍一种设计模式,————工厂设计模式:

我们不需要通过new来获取对象,而是通过工厂帮我们生产一个对象,其底层依赖的反射原理,代码如下

 

配置文件一定要放在类路径下,如果是eclipse就是src下面,否则加载不到,user.properties为配置文件名,内容是键值对,(我的习惯键用)接口名=(包名别丢)实现类名;

由此,我们Service类中的代码变成了——InterfaceDao  dao = UserDaoFactory.getUserDao()

到此我们无论我们怎么修改Dao类中的代码,都不用修改Service中代码;只需要修改user.proerpties配置文件;

下面我们实现一个Dao类用mysql数据库代码如下:

 

addUser(User form)方法就自己实现吧,如果有问题可以关注博客,这个类就完成了,只要修改掉user.properties中的配置类,就可以实现数据库与excel之间的切换,达到解耦的目的;欢迎随时提问,下一期会分享MVC设计模式不要错过,最近一直在学习人工智能,有学友欢迎一起探讨。