简介
依赖倒转原则:
1.高层模块不应该以来底层模块,两个都应该依赖抽象
2.抽象不应该依赖细节,细节应该依赖抽象
针对接口编程,不要对实现编程
里氏代换原理:子类型必须能够替换调幅类型
目的
一个应用中的重要策略决定及业务模型正是在这些高层的模块中。也正是这些模型包含着应用的特性。但是,当这些模块依赖于低层模块时,低层模块的修改将会直接影响到它们,迫使它们也去改变。应该高层的模块去迫使那些低层的模块发生改变。应该是处于高层的模块优先于低层的模块。无论如何高层的模块也不应依赖于低层的模块。而且,我们想能够复用的是高层的模块。通过子程序库的形式,我们已经可以很好地复用低层的模块了。当高层的模块依赖于低层的模块时,这些高层模块就很难在不同的环境中复用
实现
1.任何变量都不应该持有一个指向具体类的指针或者引用(多态)
2.任何类都不应该从具体类派生(多态)
3.任何方法都不应该覆写它的任何基类中的已经实现了的方法(如果覆写基类没法调用子类)
总结
依赖倒转是面向对象设计的标志。编写时考虑面向对象编程而不是细节编程,所有的依赖关系终止于抽象类或者接口