设计原则——依赖倒置原则

发布于: 2020 年 06 月 17 日
设计原则——依赖倒置原则

定义


依赖倒置原则(Dependency Inversion Principle)指:

  • 高层模块不能依赖低层模块,而是大家都依赖于抽象

  • 抽象不能依赖实现,而是实现依赖抽象

这里的核心在于:是高层定义好调用的接口抽象,低层去实现这个接口抽象,是高层决定了低层。而不是低层定义接口,让高层去调用。

这样的好处是,接口是面向业务定义的接口。而如果低层调用接口,很可能会导致接口难以重用。

例子


一个开关的小例子

根据依赖导致原则改进后为:

这里的一个重点是接口的名称为ButtonServer,是从Button角度考虑定义的接口。这样添加各种功能只用继承ButtonServer,并实现接口就好,不用修改Button。

如果从低层Lamp角度考虑,定义的接口更可能叫做LampServer。如果后期Button添加了新功能,可以调用报警器Buzzer了,低层角度定义的接口,那就需要再添加一个BuzzerServer。

扩展这个思想,当前后端有调用交互时,推荐前端定义接口。

框架设计,也是基于依赖倒置原则设计的软件。框架调用业务,而不是业务调用框架。

好莱坞原则,

Don't call me, I'll call you.

也传达了相同的思想。因此,有时依赖倒置原则,也可以称为好莱坞原则。

应用举例


Jave、Python语言中的单元测试框架JUnit、unittest,也是定义好了接口,把test case写好,框架调用自然会调用测试例子。

PS:正在学习《架构师训练营》,学习思考汇总,如有不完善,欢迎探讨

其他,接口隔离作业:https://www.jianshu.com/p/ccf4e9b4ca40

用户头像

破晓_dawn

关注

慢慢,稳稳 2017.12.06 加入

业余选手,但是有一颗向往专业的心

评论

发布
暂无评论
设计原则——依赖倒置原则