Java23种设计模式七大原则--依赖倒置原则

目录

一.定义:

二.作用:

三.实现方法:

四.代码演示:

1.接口类:

2.子类实现接口:

3.具体调用:

4.测试调用:

5.结果:


一.定义:

依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在 C++ Report 上发表的文章。

依赖倒置原则的原始定义为:抽象不应该依赖细节,细节应该依赖抽象。其核心思想是:要面向接口编程/面向抽象编程,不要面向实现编程。

依赖倒置原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合。

使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给它们的实现类去完成。

 

二.作用:

依赖倒置原则的主要作用如下。

  • 降低类间的耦合性。
  • 提高系统的稳定性。
  • 减少并行开发引起的风险。
  • 提高代码的可读性和可维护性。

 

三.实现方法:

  1. 每个类尽量提供接口或抽象类,或者两者都具备。
  2. 变量的声明类型尽量是接口或者是抽象类。
  3. 任何类都不应该从具体类派生。
  4. 使用继承时尽量遵循里氏替换原则。

 

四.代码演示:

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值