首页 > 代码库 > Spring总结_04_IoC与DI

Spring总结_04_IoC与DI

一.IoC

     IoC—Inversion of Control,即“控制反转”。  

     控制反转: Ioc容器来控制对象的创建(控制),由容器来创建及注入依赖对象(反转),由我们自己在对象中主动控制去直接获取依赖对象(正转)

 

     1996年,Michael Mattson在一篇有关探讨面向对象框架的文章中,首先提出了IOC 这个概念。面向对象设计及编程的基本思想,简单来说就是把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。

     IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦,如下图:

                                                                        技术分享

 

      由于引进了中间位置的“第三方”,也就是IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴给“第三方”IOC容器。

     若把上图中间的IOC容器拿掉,然后再来看看这套系统:

                                                   技术分享

                                                                    图4:拿掉IoC容器后的系统

        此时,A、B、C、D这4个对象之间已经没有了耦合关系,这样的话,当你在实现A的时候,根本无须再去考虑B、C和D了,对象之间的依赖关系已经降低到了最低程度。所以,如果真能实现IOC容器,对于系统开发而言,这将是一件多么美好的事情,参与开发的每一成员只要实现自己的类就可以了,跟别人没有任何关系!
  
        通过前后的对比,我们不难看出来:对象A获得依赖对象B的过程,由主动行为变为了被动行为,控制权颠倒过来了,这就是“控制反转”这个名称的由来。

     

3. IoC与DI
     DI—Dependency Injection,即“依赖注入”:由容器动态的将某个依赖关系注入到组件之中。依赖注入(DI)和控制反转(IOC)是分别从主客体的角度的描述同一件事情。

     依赖注入:应用程序依赖于IoC容器(依赖)注入应用程序所需的对象(注入

 

 

 

 

 

Spring总结_04_IoC与DI