依赖反转

依赖反转

本文介绍如何利用多态特性实现依赖反转,让高层模块不再直接依赖底层模块。

多态应该是面向对象编程范式提供的最强大的能力,多态使得依赖反转成为了可能。

没有多态以前,高层函数要调用底层函数是一定要依赖于底层,再直接调用它定义函数。这种依赖是必须的,不同语言用不同的方式来实现这种依赖,C用include导入头文件,Java用import导入包名,C#用using导入命名空间。
但是有了多态这种关系就被打破了。
依赖翻转案例
A模块为了调用B模块的能力,第一幅图从A依赖B,但是通过依赖反转,A模块通过定义接口依赖于抽象接口,B模块去实现接口,这样依赖,A不再依赖于B模块,而B模块依赖于A模块的抽象接口了。

结合上面的内容,最后再体会下依赖反转原则的定义,就比较好理解了:

  1. 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。
  2. 抽象接口不应该依赖于具体的实现和具体实现,而具体的实现应该依赖于抽象接口。

面向对象编程到底是什么?业界在这个问题上存在很多不同的说法和意见,然后对于一个软件架构师来说,其含义应该是非常明确的,面向对象编程就是以多态的手段对源代码中的依赖关系进行控制的能力,这种能力让软件加入是可以构建出某种插件式架构,让高层策略性组建与底层实现组件相分离,底层祖先可以被编译成插件,实现独立与高层组建的开发和部署。



关注博客或微信搜索公众号多媒体与图形,获取更多内容,欢迎在公众号留言交流!
扫一扫关注公众号
作者

占航

发布于

2020-10-30

更新于

2023-10-04

许可协议

评论