问题:

1.什么是依赖倒置?

2.什么是控制反转?

3.什么是依赖注入?

4.它们之间的关系是怎样的?

5.优点有哪些?

带着上面的5个问题,我们开始今天的学习。

依赖倒置原则 (Dependency Inversion Principle)

依赖倒置是一种设计原则。

依赖倒置包括三层含义:
(1)高层模块不应该直接依赖于底层模块,两者都应依赖其抽象;
(2)抽象不应依赖于细节;
(3)细节应该依赖于抽象。

控制反转 (Inversion of Control)

控制反转是一种思想。其核心思想在于,合作的对象依赖关系的管理不由具体对象来完成,而是具体对象交出依赖关系的控制权,由第三方容器来集中管理。

第三方容器管理的优点:
(1)依赖关系的集中管理,关系清晰且易管理;
(2)降低合作对象之间的耦合程度。

举个栗子。我想在北京租一间房子,我只需要把我的需求告知链家等中介公司,通过他们整合的资源,我就能够找到一间符合我需求的房子。我不需要与房东产生任何直接的关系,中间的任何问题都由链家进行统一处理。在这个例子中,房客与房东是两个独立的对象,而链家则是充当中间容器

依赖注入(Dependency Inversion)

依赖注入是控制反转的具体方法之一。依赖注入就是将底层依赖对象以参数形式传入上层对象。

对象间的依赖关系的管理被反转至IoC容器中。对象间的依赖关系由IoC容器进行统一管理,并由IoC容器来完成对象的注入。

依赖倒置原则 、控制反转 、依赖注入的关系

HyQMzQ

优点

1.实现模块间松耦合

2.由IoC容器来统一管理依赖关系,对象从复杂的依赖关系中解放。

3.对象自身弄够专注于自身功能上,不需要了解依赖对象的内部结构。

参考

[1]https://en.wikipedia.org/wiki/Dependency_injection

[2]https://martinfowler.com/articles/injection.html

[3]https://www.zhihu.com/question/23277575

[4]《Spring技术内幕》

[5]《设计模式之禅》


码头工人
9 声望0 粉丝

不必生来勇敢,天赋过人;只要投入勤奋,诚诚恳恳。