控制反转和依赖注入
网络上,这些概念看上去很复杂,并且众说纷纭。我读了其中几篇文章,按照自己的理解总结一下。凡学习,必须有笔记输出,否则等于从来没有学过。
其实,控制反转(IoC)、依赖注入(DI)和设计模式中的依赖倒置是一脉相承的:都是面向接口编程的一种表述。
一、依赖倒置原则:
A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
B.抽象不应该依赖于具体,具体应该依赖于抽象。
二、控制反转:
两个对象之间的直接依赖,变成了共同依赖于接口。
这就是反了;控制,原先是两个对象耦合得很深,互相控制。
三、依赖注入:
一个对象A内部,使用了另外一个对象B。这就依赖得很深。改为:
在对象A内部,使用的是接口或抽象函数,而对象B继承于该接口或抽象函数。在运行过程中,再将对象B作为参数传进对象A内部(注入,我靠,好黄好暴力)。
在这几个概念都与接口息息相关。