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.结果:
以上这是对接口的规范定义
对抽象类的规范定义: