什么是IOC

IOC的理论背景

面向对象的项目中,底层都是使用多个对象构成的,通过每个对象之间的合作来实现业务逻辑的。
如果项目的规模越来越大,底层对象的合作就会越来越复杂,通常会出现对象之间的多重依赖性关系。
从而造成代码的耦合度会越来越高,一个地方瘫痪而造成
高耦合之间的关系就好像机械表盘一样:

耦合关系不仅会出现在对象与对象之间,也会出现在软件的各个模块之间,以及软件系统和硬件系统之间。
为了解决对象之间耦合度过高的问题,软件专家Michael Mattson 1996年提出了IOC理论,用来实现对象之间
的“解耦”。
什么是IOC?

IOC全程叫Intersion of Control 翻译过来的意思就是我们常说的控制反转。
简单概括IOC的作用:把复杂的系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重复和扩展。
换一种说法:借助于"第三方"实现具有依赖关系的对象之间的解耦。

使用IOC理念来管理对象,图形解析:

由于引用了中间的"第三方",也就是IOC容器,使得A、B、C、D这四个对象没有了耦合关系,
齿轮之间的传动全部依靠"第三方",全部对象的控制权全部上缴给"第三方"IOC容器,所以,IOC容器
成了整个系统的关键核心,起到了“粘合剂”的作用,就是把系统中的对象粘合在一起发挥作用,如果
没有这个作用,对象与对象之间会彼此失去联系。

拿掉IOC容器后的系统图片实例:

拿掉IOC容器之后,A、B、C、D对象对象之间已经没有了耦合关系,彼此之间没有任何关系。A、B、C、D齿轮就是系统中
要完成的全部内容内容。这个时候,当你在实现A的时候,根本不需要去考虑B、C、D了,对象之间的依赖关系已经降到最低程度了。

IOC为什么叫做控制反转?

软件系统在没有引入IOC容器之前:对象A依赖于对象B,如果A对象在进行初始化或者运行到某一点的时候,
对象A必须主动去创建对象B或者使用已经创建好的对象B。无论创建或者使用,控制全都在自己手上。

软件系统中引入IOC容器之后:由于IOC容器的加入,对象A和对象B之间失去了直接联系,所以,当对象A运行到对象B的时候,IOC容器会主动创建一个对象B注入到对象A需要的地方。

引入IOC容器后的不同:对象A获得依赖对象B的过程,由主动行为变为了被动行为,控制权颠倒过来了,
这也是控制反转这个名字的由来。

IOC也叫依赖注入(Dependency Injection)

既然IOC是控制反转,到底什么地方反转了?答案:获得依赖对象的过程反转了。控制被反转后,获得依赖对象
的过程由自身管理变成了由IOC容器主动注入。

所谓的依赖注入,就是在IOC容器的运行期间,动态地将某种依赖关系注入到对象中。

总结:

依赖注入和控制反转是从不同的角度去描述同一件事情,指通过引入IOC容器,利用依赖关系注入的方式,
实现对象之间的解耦和。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值