一般在Java Web开发中,Java类的调用程序是web层调用service层,service层调用dao层。举个例子:
public class StudentController{//创建web层
StudentService ss=new StudentService();//新建service对象
System.out.println("学生的名字是:"+ss.getName());//调用service方法
}
public class StudentService{//创建service层
StudentDao sd=new StudentDao();//新建dao对象
public String getName(){
return sd.getName();//dao对象调用方法
}
}
web对象依赖于service对象,service对象依赖于dao对象。如果一个项目中有上千个类,并且相互依赖,当修改一个java文件的时候,就要对其他有依赖关系的都需要进行修改,这样大大降低了软件的可维护性,说白了就是耦合度太高带来的问题。
面向接口编程可以改善代码耦合吗?并不能。
public class StudentController{//创建web层
IStudentService ss=new StudentService1();//新建service对象
system.out.println("学生的名字是:"+ss.getName());//调用service方法
}
我们发现耦合依然存在,如果我们需要调用其它接口的实现类,比如StudentService2时,依然需要在web层修改代码并重新编译。如何解耦呢,工厂模式可以。但是又出现了新问题,开发人员需要编写相应的工厂类,提高了工作量,那怎么解决呢,Spring框架可以搞定。当Spring容器和接口结合起来,就很方便我们修改程序。比如service类不能满足我们需求的时候,我们可以修改这个类,就可以解决;也可以重新编写一个service接口的实现类,这个时候只需要在配置文件中指定studentAction依赖于新的类,而不需要对程序代码进行修改和重新编译。
Fighting!