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

像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的真正含义!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值