一、ioc 的底层原理:
主要使用技术
1).xml配置文件;
2).dom4j解析技术;
3)工厂设计模式;
4).反射的技术;
原始new的方式,耦合度高,使用工厂模式解耦:
public class Userservice{
public void add(){
}
}
public class UserServlet(){
Uservice s= Factory.getService();
//调用add方法实现add方法
s.add();
}
//创建一个工厂类:提供返回对象的方法:
public class Factory {
public static Uservice getService(){
return new Uservice();
}
}
这种方案也有问题,severlet跟工厂类又有新的耦合度,所以最终是选择ioc的方式来解耦,目前也是最优的一种方案;
控制反转:将对象用配置文件的方式来创建:
public class UserService {
}
public class UserServlet{
//在这里得到Uservice对象:
//第一步:创建一个配置文件:xml的配置文件;
<bean id="userService" class="cn.item.UserService"><bean/>
}
//第二步:创建一个工厂类:
//使用dom4j 和反射:
public class userFactory {
//返回
public static Uservice getService(){
//1.使用dom4j解析文件;根据id值可以得到对应的class属性值;
String classValue="class属性值"
//2.使用反射:
Class clazz=class.forName(classValue);
//创建对象:
Uservice service=clazz.newInstance();
return service;
}
}
很清楚的发现,耦合度确实降低了,大多数只要修改配置文件就能改变类名之类的操作;