今天给大家介绍的是面向接口编程:
首先需要知道为什么要面向接口编程,会给我们带来什么好处,在写这篇文章之前,我也看过很多博客跟帖子上的介绍,不过说句实话讲解的很一般,其实面向接口编程的最主要两个字在接口上,接口带来的好处就是降低耦合性(解耦);可能一些人不太了解这个词,我来用一个实例做介绍:
现在我有两个类代码如下
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设计模式不要错过,最近一直在学习人工智能,有学友欢迎一起探讨。