美文网首页
控制反转和依赖注入

控制反转和依赖注入

作者: 火乐君_52cd | 来源:发表于2018-11-08 14:37 被阅读0次

    控制反转(Inversion of Control)

    一种面向对象的设计原则,降低计算机代码之间的耦合度

    基本思想

    借助于第三方(即IOC容器)来实现具有依赖关系的对象之间的解耦

    • 谁控制谁,控制什么:
    • 谁控制谁:
      由IoC容器来控制对象
    • 控制什么:
      IoC容器主要控制了被控制对象的外部资源的获取,包括依赖对象,文件,常量数据等
    • 控制反转反转的是什么:
    • 正转:
      传统J2SE中,是在对象中主动去直接获取依赖的对象和资源
    • 反转:
      由容器来负责创建和注入依赖对象,故而对象从传统的主动获取变成了控制反转后的被动接受
    • 反转了依赖对象和资源的获取

    IoC能做什么

    IoC容器负责控制以来对象的创建和查找,由容器进行组合对象,对象之间是松耦合的
    IoC带来的最大的变化是思想上发生了主从换位的变化,将应用程序由传统的主动获取变化为被动等待


    依赖注入(Dependency Injection)

    原理概述

    • 高端描述:

    组件之间依赖关系由容器在运行期决定,即由容器动态的将某个依赖关系注入到组建之中。

    • 接地气版:

    依赖注入就是将实例变量传入到一个对象中去
    含参的构造函数初始化就是依赖注入思想的一种体现,将被依赖的实例变量通过参数的方式传入,从而降低了耦合度

    拆解分析:

    • 谁依赖于谁:

    应用程序依赖于IoC容器

    • 为什么需要依赖:

    应用程序需要IoC容器来提供程序内对象所需要的外部资源

    • 谁注入了谁:

    IoC容器注入了应用程序中的对象

    • 注入了什么:

    应用程序对象所需要的外部资源(依赖对象,常量数据等)


    控制反转和依赖注入的关系

    • 来自ITEYE某技术牛人的博客:

    “依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。

    • W3Cschool中Spring教程中的内容:(个人比较倾向这种说法)

    控制反转是一种思想
    依赖注入是一种设计模式
    依赖注入是控制反转的一种实现方式,控制反转同样具有其他的实现方式

    总结

    1. 控制反转是一种在软件工程中解耦合的思想,调用类只依赖接口,而不依赖具体的实现类,减少了耦合。控制权交给了容器,在运行的时候才由容器决定将具体的实现动态的“注入”到调用类的对象中。
    2. 依赖注入是一种设计模式,可以作为控制反转的一种实现方式。依赖注入就是将实例变量传入到一个对象中去(Dependency injection means giving an object its instance variables)。
    3. 通过IoC框架,类A依赖类B的强耦合关系可以在运行时通过容器建立,也就是说把创建B实例的工作移交给容器,类A只管使用就可以。

    相关文章

      网友评论

          本文标题:控制反转和依赖注入

          本文链接:https://www.haomeiwen.com/subject/wjgixqtx.html