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

控制反转和依赖注入

作者: 火乐君_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只管使用就可以。

相关文章

  • 6.Spring IoC练习

    1. 依赖注入和控制反转 依赖注入和控制反转IoC是什么Ioc—InversionofControl,即“控制反转...

  • JAVA IOC 与 DI

    依赖倒置、控制反转和依赖注入的区分 依赖倒置、控制反转和依赖注入的区分依赖倒置(Dependency Invers...

  • day02 IoC/DI学习

    DI(依赖注入)是Martin Fowler 在2004年提出的关于IoC(控制反转)的解释,依赖注入和控制反转其...

  • 第三章 在spring中引入IoC和DI

    概念关系 控制反转(IoC) VS 依赖注入(DI) 控制反转可以分为两种子类型:依赖注入(DI)和依赖查找 1....

  • 关于依赖注入(typescript)

    一、概念:依赖注入(DI)、控制反转(IOC)、IOC容器 依赖注入(DI)和控制反转(IOC)基本是一个意思,因...

  • day03 IoC学习

    依赖注入是Martin Fowler 在2004年提出的关于IoC(控制反转)的解释,依赖注入和控制反转其实就是一...

  • Date-04-IoC学习

    依赖注入是Martin Fowler 在2004年提出的关于IoC(控制反转)的解释,依赖注入和控制反转其实就是一...

  • Dagger2常用注解诠释

    依赖注入 控制反转(IoC)与依赖注入(DI)浅谈依赖注入理解依赖注入(IOC)和学习Unity Gradle配置...

  • 浅谈spring boot控制反转的相关问题

    控制反转,和依赖注入是同一个意思,我觉得应该重点去了解什么是依赖,而后控制反转、依赖注入就有体会了;关于依赖,可以...

  • learn go with tests 学习笔记(四)依赖注入

    知识点 依赖注入举例 首先我们应该明白什么是控制反转 -> 控制反转(IoC)与依赖注入(DI)控制反转的目的很简...

网友评论

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

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