首页技术文章正文

依赖注入能解决哪些问题?

更新时间:2021-11-23 来源:黑马程序员 浏览量:

IT培训班

计算机编程是把一些实际问题组织并抽象起来的过程,编写程序时,开发人员经常使用团队其他成员编写的代码或者一些第三方工具(如著名的开源库或者框架)。随着项目的扩大.项目中需要依赖的模块会越来越多,这时如何有效地组织这些模块是非常重要的。依赖注入能够有效解决模块问依赖的问题。

依赖注人的英文是Dependency Injection,在软件开发中缩写为DI。依赖注入应用了控制反转的设计思想,因此很多人也称依赖注人为控制反转。控制反转(Inversion of Control,loC)是一个重要的面向对象编程的法则,用来减少计算机程序的耦合问题,它一般分为两种类型——依赖注人和依赖查找(Dependency Lookup)。简单地说,控制反转是一种设计思想,而依赖注入是控制反转思想的一种实现方式。
在程序开发中,组件获取依赖通常有3种方式。
①使用new运算符直接创建出依赖。该方式是在自己的应用程序中创建依赖对象。它有一个弊端,就是当程序的多个模块都需要应用一个对象时,会造成模块之间的高耦合;如果一个对象参数过多,有可能还需要对象创建其他参数对象,所以这种方式无法适合复杂的应用。
②直接引用依赖,如引用全局变量。该方式需要一定的条件,例如依赖对象对于用户对象是直接开放的,这里不做讨论。
③在需要的地方传人依赖。该方式便是依赖注入,它的重要特点是在系统运行中可以把创建依赖对象的控制权交给IoC容器,由IoC容器动态地通过注入的方式,向某个对象提供它所需要的其他对象。这样对象与对象之间松散耦合,方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

依赖注人对编程带来的最大改变不是从代码上(而是从思想上发生了“主从换位”的变化,把应用程序向依赖对象主动出击变为应用程序被动的等待,由IoC容器来创建并注入它所需要的资源。例如将IoC容器看作一个“保姆”,“我”看作用户对象,“蛋糕”看作依赖对象:当“我”想吃“蛋糕”时不是自己来做,而是告诉“保姆”,“保姆”做好之后交给“我”,整个过程如图4-9所示。

1637633991250_依赖注入.png

在实际开发中,loC容器通常会是一个应用框架,如Spring、AngularJS等:用户对象表示开发人员编写的程序;依赖对象可以是任何用户对象所需要依赖的资源,包括对象、第三方资源、常量等。







猜你喜欢:

依赖注入怎样实现?有几种方式?

Spark RDD的两种依赖关系?

依赖注入是什么?依赖注入介绍

依赖倒转原则的原理【案例介绍】

黑马程序员java高级软件工程师培训

分享到:
在线咨询 我要报名
和我们在线交谈!