目录
一.定义:
依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在 C++ Report 上发表的文章。
依赖倒置原则的原始定义为:抽象不应该依赖细节,细节应该依赖抽象。其核心思想是:要面向接口编程/面向抽象编程,不要面向实现编程。
依赖倒置原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合。
使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给它们的实现类去完成。
二.作用:
依赖倒置原则的主要作用如下。
- 降低类间的耦合性。
- 提高系统的稳定性。
- 减少并行开发引起的风险。
- 提高代码的可读性和可维护性。
三.实现方法:
- 每个类尽量提供接口或抽象类,或者两者都具备。
- 变量的声明类型尽量是接口或者是抽象类。
- 任何类都不应该从具体类派生。
- 使用继承时尽量遵循里氏替换原则。
四.代码演示:
1.接口类:
package com.zking.design.dip;
/**
* @description: 依赖倒置原则--主题
* @author: codinglife
* @time: 2021/5/6 10:35
*/
public interface Subject {
public void attri(); //拥有属性
}
2.子类实现接口:
package com.zking.design.dip;
/**
* @description: 依赖倒置原则--Windows颜色
* @author: codinglife
* @time: 2021/5/6 10:35
*/
public class WindowsColorSubject implements Subject {
@Override
public void attri() {
System.out.println("Windows颜色属性");
}
}
package com.zking.design.dip;
/**
* @description:依赖倒置原则--Windows声音
* @author: codinglife
* @time: 2021/5/6 10:51
*/
public class WindowsVoiceSubject implements Subject{
@Override
public void attri() {
System.out.println("Windows声音属性");
}
}
3.具体调用:
package com.zking.design.dip;
/**
* @description:依赖倒置原则--windows主题
* @author: codinglife
* @time: 2021/5/8 16:38
*/
public class WindowsSubject {
public void haveAttri(Subject subject){
subject.attri();
}
}
4.测试调用:
package com.zking.design.dip;
/**
* @description: 里氏替换原则--测试
* @author: codinglife
* @time: 2021/5/6 10:54
*/
public class SubjectMain {
public static void main(String[] args) {
WindowsSubject windowsSubject= new WindowsSubject();
windowsSubject.haveAttri(new WindowsColorSubject()); //windows颜色
windowsSubject.haveAttri(new WindowsVoiceSubject()); //windows声音
}
}
5.结果:
以上这是对接口的规范定义
对抽象类的规范定义:https://blog.csdn.net/Mr_xiayijie/article/details/116449742?spm=1001.2014.3001.5501