假设我们有这么一个场景,一个四、五岁的小朋友,想要吃东西。
如果他自己从冰箱里找东西吃,可能会造成一些不好的结果,比如可能会拿到无法直接直接食用的食物,或者忘记关冰箱门等灯。
你可以思考一下,一个四、五岁的小孩儿,自己去冰箱拿食物,甚至自己去加工食材,你是不是觉得这不太正常?所谓的“控制反转”的概念就是「对组件对象控制权的转移,从程序代码本身转移到了代码之外的第三方。」
那么正常情况是什么样的呢?
作为一个四、五岁的小孩儿,只需要找父母陈述一下需求,比如"我饿了、我想吃XX",这个时候,父母就会做好他所需要的食物,然后拿给他。
从主动去冰箱拿(正转)食物,到你想要吃的食物而被动获得(反转),这其实就是一个对象调用权转移的过程。
前者是主动获取食物,后者是由父母,也就是第三方把食物给他,而他并不关心食物从哪来,以及怎么得来。
在前面的场景中,一个四、五岁的小孩,想要吃东西。依赖注入不是目的,它只是实现控制反转的方式。
他只需要陈述一下需求,父母就会做好他需要的食物(依赖),然后拿给他(注入)。
一种反转流、依赖和接口的方式,它把传统上由程序代码直接操控的对象的调用权交给第三方,通过第三方来实现对象组件的装配和管理。这个描述中的第三方就是依赖注入中的控制系统。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |