IOC(Inversion of Control)反转的到底是什么?

来源:互联网 发布:奥迪矩阵式led大灯视频 编辑:程序博客网 时间:2024/06/06 11:41

像Spring这样的框架都提供了对IOC(Inversion of Control)的支持,但IOC反转的到底是什么呢?


为了说清楚这个问题,需要先定义几个概念。


 1. 依赖对象(Dependent Object):依赖于别的对象来实现其功能的对象。

 2. 被依赖对象(Dependency Object):被别的对象依赖的对象。


比如:

public class DependentClass

{

    private DependencyClass mA;


}


那么,对于DependentClass的对象b来说,b.mA指向的就是一个被依赖对象,b就是一个依赖对象。


对于没有采用IOC框架的应用来说,依赖对象(比如对象b)必须要自己控制如何实例化被依赖对象(比如b.mA),比如在DependentClass的构造方法中去实例化mA。

    public DependentClass()

    {

        mA = new DependencyClass();

    }


但是,对于那些采用了IOC框架(比如Spring)的应用来说,依赖对象(比如对象b)可以将实例化被依赖对象(比如b.mA)的工作委托给IOC框架来完成。也就是说,这些应用不需要再自己控制被依赖对象的实例化过程了。换句话讲,IOC框架反转了对被依赖对象的实例化过程,即从应用程序自己控制变成了框架控制。


这就是IOC的真正含义!


0 0