题记:忽然觉得一些解释概念的文章解释有些故弄玄虚,准备跟着自己的阅读情况白话翻译一些。
依赖倒置(Dependence Inversion Principle)
- 高级模块不应当依赖于低级模块。它们都应当依赖于抽象。
- 抽象不应当依赖于实现,实现应当依赖于抽象。
依赖是什么
一般而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用 来自愤怒的韭菜
原则第二句的主语是编程
雄兔脚扑朔雌兔眼迷离,文言文的互文语法。
不论抽象还是实现都不应该依赖于实现,都应该依赖于抽象。
大白话
如果有个抽象类和实现类,请在用到这些类的方法中引用抽象类做参数。
进一步,如果有两个方法的操作对象有相同性质就对他们进行一步抽象,然后合并代码。
吐槽
抽象的意思其实很模糊,我作为一个没文化的人到大学为止只听说过抽象派绘画而已。
而且原则的英文原文故弄玄虚把主语说成高级模块、抽象等,但实际上高级低级是相对的,把一句话里的主语和宾语用同一套指代方式表达是玩文字游戏。