一、什么是IOC
- 中文名为控制反转:就是将 new 一个对象的过程和对象之间的调用过程交给Spring管理
- 使用IOC的目的是为了降低耦合度
- 入门案例就是IOC的实现
二、IOC的底层原理(技术栈)
- XML解析
- 工厂模式
- 反射
示例1:
原始方式:
class UserService{
execute(){
...
}
}
class UserDao{
add(){
...
}
}
class UserService{
execute(){
UserDao dao = new UserDao();
dao.add()
}
}
采用new对象的方式实现,耦合度太高,所以采用工厂模式降低耦合度
示例二:工厂模式
class UsesrService{
execute(){
...
}
}
class UserDao{
add(){
...
}
}
class UserFactory{
public static UserDao getDao(){
return new UserDao();
}
}
class UserService{
UserDao dao = UserFactory.getDao();
dao.add();
}java
工厂模式只能降低耦合度,不能完全消除耦合度;工厂模式实例中只是降低了耦合度,但耦合度仍然很高,所以就有了第三个示例:IOC,控制反转将耦合度降低到最低!
示例三:IOC控制反转
- XML文件
<bean id = "dao" class = "com.study.UserDao"></bean>
- 工厂模式(通过反射创建对象)
class UserFactory{
public static UserDao getDao(){
// 1. 解析xml文件
String classValue = class属性值
// 2. 通过反射创建对象
Class classz = Class.forName();
return (UserDao)classz.newInstance();
}
}
这样进一步降低了耦合性
三、总结
- IOC控制反转的底层原理就是采用工厂模式管理Bean