依赖倒置原则,Dependence Inversion Principle,简称 DIP
含义:
1.高层模块不应该依赖低层模块,两者都应该依赖其对象;
2.抽象不应该依赖细节;
3.细节应该依赖抽象;
在JAVA语言中的表现是:
1.模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;
2.接口或抽象类不依赖于实现类;
3.实现类依赖接口或抽象类。
更加精简的定义就算“面向接口编程”------OOD(Object-Oriented Design,面向对象设计)的精髓之一
优点:
1.减少类间的耦合性
2.提高系统的稳定性
3.降低并行开发引起的风险
4.提高代码的可读性和可维护性
TDD(Test-Driven Development,测试驱动开发)开发模式是依赖倒置原则的最高级应用
测试驱动开发:先写好单元测试类,然后再写实现类,对提高代码质量有很大帮助,特别适合研发类项目或在项目成员整体水平比较低的情况下采用
对象的依赖方式:
1.构造函数传递依赖对象
2.Setter方法依赖对象
3.接口声明依赖对象
规则:
1.每个类尽量都有接口或抽象类,或者抽象类或接口两者都具备
2.变量的表面类型尽量是接口或者是抽象类
3.任何类都不应该从具体类派生
4.尽量不要覆写基类的方法
5.结合里式替换原则使用