控制反转(IOC)和依赖注入(DI)

来源:互联网 发布:java正则表达式是什么 编辑:程序博客网 时间:2024/06/06 13:18

          用过spring的人都知道,spring的核心是IOC和AOP。IOC,即控制反转不是什么技术,而是像gof一样,是一种设计模式。

一、传统的程序设计

public class carServiceImpl{

private CarDao carDao = new  CarDao();

public void getCarInfo(){

carDao.getCarInfo();

}

}

传统的java程序设计中,CarDao这种依赖对象资源的创建和维护在carServiceImpl内部来做的。这样的话势必会造成各个组件模块之间的高耦合。


二、 利用IOC模式后

public class carServiceImpl{

private CarDao carDao;

public CarDao getCarDao() {
return carDao;
}
public void set
CarDao(CarDao carDao) {
this.carDao = carDao;
}

public void getCarInfo(){

carDao.getCarInfo();

}

}

 IOC模式的程序设计中,我们把依赖对象交给IOC容器来创建和维护,然后把IOC容器创建好的依赖对象注入到carServiceImpl中,这样依赖对象的控制权就发生了反转,从对

象内部反转到了容器来控制。


三、优点

1)传统的程序设计,是在对象内部直接去创建依赖对象,叫做正转,使用IOC后,把依赖对象的控制权交给第三方(即IOC容器来控制)来控制,控制权发生了反转。

2)IOC控制反转能够降低组件模块之间的耦合度。

3)其实IOC容器可以说是一个中介,以前是自己直接去创建和维护依赖对象,现在改为从IOC容器来获取这些依赖对象。


四、依赖注入(DI)

          IOC容器的重点是在系统运行期间,把一个对象所依赖的其他对象动态的注入到该对象中去,这一点就是通过 DI 来实现的,依赖注入是通过反射机制实现的。


1 0