zoukankan      html  css  js  c++  java
  • 控制反转的概念理解

    在Spring中,常常用到控制反转(IoC),而这个概念的理解恰恰是最困难的部分:

    控制反转中,“反转”的概念在于,将对象的控制权由代码本身移交给容器,过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。

    多数时候,控制反转也叫依赖注入(DI),(虽然控制反转的实现不止依赖注入一种,还有其它方式如依赖查找等)

    【下面的内容摘自维基百科】

    依赖注入的方法是:

            * 如果类X的一个实例对象x调用了类Y的一个实例对象y的方法,那么就称类X依赖于类Y。为了打破这种依赖——“反转”,首先我们可以引入一个接口I(第三方类),接口I中声明了对象y将被对象x调用的所有方法;然后,我们对类Y稍加改造,使其实现接口I;最后,我们把在对象x中对y的调用改为对接口I中对应方法的调用。经过这番改造后,原先的X对Y的依赖关系不存在了,类X和Y现在都依赖于接口I。
            * 这种通过引入接口I来消除类X对Y的依赖的方法,被称作“控制反转”,又叫做“依赖注入”。
            * 需要注意的是,类Y可能还依赖于其他类。在应用反转之前,X依赖于Y,从而也间接依赖于Y所依赖的所有“其他类”。应用控制反转之后,不仅消除了X对Y的直接依赖,且前面提到的那些所有的间接依赖也消除了。而新引入的接口I则不依赖于任何类。

    一般控制反转分为3类:

            *     Type 1 : 基于接口 (interface injection)。Depending object 需要实现(implement) 特定 interface 以供框架注入所需对象。
            *     Type 2 : 基于设值函数 (setter injection)。Depending object 需要实现特定 setter 方法 (但不需要依赖特定interface),
            *     Type 3 : 基于构造函数 (constructor injection)

  • 相关阅读:
    Jni如何传递并且修改两个基础参数
    【转】对于JNI方法名,数据类型和方法签名的一些认识
    Android应用程序开机开机启动
    Android程序中Acticity间传递数据
    2014-7-6 学期总结
    程序员的美:极致与疯狂
    《重构:改善既有代码的设计》——关于代码注释的唠叨
    2014-5-5 近期小结和计划
    Android:RelativeLayout 内容居中
    图像处理:图像灰度化
  • 原文地址:https://www.cnblogs.com/zhguang/p/3057116.html
Copyright © 2011-2022 走看看