什么是依赖注入?
1、什么是依赖,结合现实先想一想依赖这个词,就拿遥控器来举例:遥控器和电池他们就算依赖,遥控器必须依赖电池才能使用,电池就像一个接口,遥控器就像是实现了这个接口。有的人就想到了接口的概念,差不多就是这个意思,这个例子可能不太恰当,但是有助于你思考依赖这个概念。通俗讲:电池+遥控器才能运行,它们的关系叫做依赖。
2、什么是注入,在这里的注入其实是实现了IOC(控制反转),控制反转是一种思想,不是什么框架,也不是什么技术。传统程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象,而IOC是有专门一个容器来创建这些对象,即由IOC容器来控制对象的创建。谁控制谁?当然是IOC 容器控制了对象。控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。
3、什么是容器,容器表面意思就是盛放东西的物品,其实也差不多,不过咱们的容器是用来获取实现需要注入的对象的。
4、什么是反转,有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转。而反转则是由容器来帮忙创建及注入依赖对象。为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转。哪些方面反转了?依赖对象的获取被反转了。
5、上面通俗的讲解了依赖注入,只是为了有一个概念,依赖注入的思想:将相互依赖对象的创建、协调工作交给容器去处理,每个对象只需要关注其自身的业务逻辑关系就可以了。在这样的角度上来看,获得依赖的对象的方式,进行了反转,变成了由容器控制对象如何获取外部资源(包括其他对象和文件资料等等)。
通俗点说许多应用都是通过彼此间的相互合作来实现业务逻辑的,如类A要调用类B的方法,以前我们都是在类A中,通过自身new一个类B,然后在调用类B的方法,现在我们把new类B的事情交给容器来做,在我们调用的时候,容器会为我们实例化。
希望小伙伴们看了我上面写的能有一些理解,假如有讲的不好的地方,请谅解,也可以在下面留言指出来,大家一起讨论进步。