Java23种设计模式七大原则--依赖倒置原则
一.定义:
依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在 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.结果:
以上这是对接口的规范定义
对抽象类的规范定义:

