依赖倒置原则

1 英文名字

dependence inversion principle

2 本质

上层模块不直接依赖于下层模块,而是上下层模块都依赖于抽象接口。上层模块中保存抽象接口的引用,而下层模块实现该抽象接口。

原理图如下:

原来的依赖关系,上层模块依次依赖下层模块

新的依赖关系,上下层模块都依赖于抽象接口

这里的依赖应该从头文件的角度来理解,或者从import的角度来理解,比如上层模块中要保存抽象接口的引用,因此上层模块需要

import抽象接口,而下层模块需要实现抽象接口,它也需要import该抽象接口,所以说,上下层模块都依赖于抽象接口。

3 倒置的来历

如果设计上不使用这个依赖倒置原则的话,那么依赖关系就是figure 1所示了。

使用了之后,一般会把抽象接口和上层模块放在一个包中,因为抽象接口可能有多个下层实现,放在任何一个下层模块

的包里面都是不合适的。

这样的话,下层模块反过来要依赖于上层模块所在的包了。所以,就叫做依赖倒置。

原文地址:https://www.cnblogs.com/hustdc/p/6429667.html