疑问:SOLID的依赖倒置原则是否实为依赖重定向?
关于SOLID依赖倒置原则(DIP)的理解困惑与验证
我一直搞不懂SOLID里的依赖倒置原则(Dependency Inversion Principle,DIP),怕把概念和实现混了,所以整理了思路,希望有人能指出我的误区。
我最困惑的是“倒置”这个词,从字面理解应该是完全反转依赖关系:原本高层模块依赖低层模块,现在改成低层模块依赖高层模块。但结合这个原则的三条表述:
- 高层模块不应依赖低层模块
- 两者都应依赖抽象
- 抽象不应依赖细节
再结合接口的使用方式,我觉得DIP建议的根本不是“倒置”,反而更像重定向:高层和低层模块的依赖都被导向某个接口,由低层模块来实现这个接口(这样更换低层模块的实现时,高层模块不会受影响)。
我画了一张示意图来解释这个想法:
想问问我的理解到底对不对?
内容的提问来源于stack exchange,提问作者JulesMG
相关产品推荐
相关产品推荐

