大话DI依赖注入+IOC控制反转(一) 之 定义

时间:2021-05-30 02:10:01

转发时请注明原创作者及地址,否则追究责任。原创:alunchen

依赖注入与控制反转
      依赖注入与控制反转是老生常谈的问题。一般面试也会面试到这种问题。网上很多很多这方面的资料,搜索出来一大堆。
下面我们大话一下这些个定义。

DI依赖注入
      依赖注入既依赖,又注入。依赖的是容器,注入的也是容器,把你的对象放入容器,并且依赖于容器。

IOC控制反转
      控制反转,意思是对象的创建由容器来确定。
      在我们开始接触编程时,一般都是通过new来创建对象。这种做法有什么缺点呢?提高了创建对象时的耦合度、创建对象时的不统一。那么我们如果降低耦合度、统一地创建对象呢?
      通过工厂方法来创建对象可以吗?通过工厂的确可以实现我们的目的。工厂模式,我们已经开始接触控制反转中的‘反转’了。因为对象不是我们创建,都是有工厂来创建。说到反转,其实我们在写代码时,有用到方法间的调用,都是使用‘反转’。封装都会用到反转,下面用白话说清楚一点。
      反转第一次听比较难理解,其实说白了,就是原来你控制的逻辑、对象,变成交由第三方控制。如你创建了一个公共方法,提供RSA加解密。调用加密时,我们只需要提供一个钥匙与明文就能返回一个密文,不需要知道实现的逻辑。这就是反转,不是我们控制。
      再聊聊控制反转的进化史。
      随着对象的增多,工厂模式显得很‘累赘’,因为每个对象都需要自己写个方法甚至类去创建。
      这时候,容器的想法出现了。用容器装载所有的对象,需要此对象时从容器取出即可。不需要管理对象。

可以关注本人的公众号,多年经验的原创文章共享给大家。

   大话DI依赖注入+IOC控制反转(一) 之 定义