更新时间:2021-11-23 来源:黑马程序员 浏览量:
计算机编程是把一些实际问题组织并抽象起来的过程,编写程序时,开发人员经常使用团队其他成员编写的代码或者一些第三方工具(如著名的开源库或者框架)。随着项目的扩大.项目中需要依赖的模块会越来越多,这时如何有效地组织这些模块是非常重要的。依赖注入能够有效解决模块问依赖的问题。
依赖注人的英文是Dependency Injection,在软件开发中缩写为DI。依赖注入应用了控制反转的设计思想,因此很多人也称依赖注人为控制反转。控制反转(Inversion of Control,loC)是一个重要的面向对象编程的法则,用来减少计算机程序的耦合问题,它一般分为两种类型——依赖注人和依赖查找(Dependency Lookup)。简单地说,控制反转是一种设计思想,而依赖注入是控制反转思想的一种实现方式。
在程序开发中,组件获取依赖通常有3种方式。
①使用new运算符直接创建出依赖。该方式是在自己的应用程序中创建依赖对象。它有一个弊端,就是当程序的多个模块都需要应用一个对象时,会造成模块之间的高耦合;如果一个对象参数过多,有可能还需要对象创建其他参数对象,所以这种方式无法适合复杂的应用。
②直接引用依赖,如引用全局变量。该方式需要一定的条件,例如依赖对象对于用户对象是直接开放的,这里不做讨论。
③在需要的地方传人依赖。该方式便是依赖注入,它的重要特点是在系统运行中可以把创建依赖对象的控制权交给IoC容器,由IoC容器动态地通过注入的方式,向某个对象提供它所需要的其他对象。这样对象与对象之间松散耦合,方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
依赖注人对编程带来的最大改变不是从代码上(而是从思想上发生了“主从换位”的变化,把应用程序向依赖对象主动出击变为应用程序被动的等待,由IoC容器来创建并注入它所需要的资源。例如将IoC容器看作一个“保姆”,“我”看作用户对象,“蛋糕”看作依赖对象:当“我”想吃“蛋糕”时不是自己来做,而是告诉“保姆”,“保姆”做好之后交给“我”,整个过程如图4-9所示。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19