软件设计中的六大原则-依赖倒置原则

设计模式六大原则:单一职责原则

设计模式六大原则:接口隔离原则

设计模式六大原则:依赖倒置原则

设计模式六大原则:里氏替换原则

设计模式六大原则:迪米特法则
 
设计模式六大原则:开闭原则

依赖倒置原则的定义:
高层模块不应该依赖低层模块,二者应该依赖其抽象
抽象不应该依赖细节;细节应该依赖抽象
针对接口编程,不要针对实现编程

优点:
可以减少类间耦合性、提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险。

一个人叫tom它一直在学习,他可能学习java ,python,go,scala等等。。
那么我们对它所要学习的内容做一个抽象也就是定义一个接口

public interface IStudy {
    public String study();
}

然后然后我们对他的学习的内容做实现

public class JavaStudy implements IStudy {
    @Override
    public String study() {
        return "正在学习java";
    }
}
public class PythonStudy implements IStudy {
    @Override
    public String study() {
        return "正在学习python";
    }
}

等等
接下来我们对tom的做一个单例,因为tom是一个唯一的人,但是他能被赋予学习很多课程。

public class Tom {

    private IStudy iStudy;

    private static Tom tom = new Tom();

    public static Tom getInstance(){
        return tom;
    }

    public void setICourse(IStudy iStudy){
        this.iStudy = iStudy;
    }

    public String getStudy(){
       return tom.getStudy();
    }
}

接下来我们测试我们的实现

    public static void main(String[] args) {
        Tom tom = Tom.getInstance();
        tom.setICourse(new JavaStudy());
        tom.getStudy();
    }

这样来看我们拿到tom,可以对其赋予任何课程他都可以学习。
但是上面这个例子看着有点简单,而且实现的功能并不强大,那么如果这个tom学习十门课或者上万门课呢?其实依赖倒置的原则,实现后就再也不用修改主要的逻辑代码了,你想要学习就自己实现一个课程类就好。请看下面的例子;

    public static void main(String[] args) {
      List<IStudy> studyList = new ArrayList<>();
      studyList.add(new JavaStudy());
      studyList.add(new PythonStudy());

      studyList.forEach((tomCourse)->{
          System.out.println(tomCourse.study());
      });
    }

这样我们就可以把我们想要学习的例子实现了,然后放在list就好了,tom就可以学习了。

这个例子虽然简单,但是在工作中我们如果有固定的流程的时候我们可以用这个大大的提高工作效率和代码的可读性。

参考地址

六大设计原则是指面向对象设计的六个重要原则,它们是: 1. 单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个引起它变化的原因,即一个类应该只有一个职责。 2. 开放封闭原则(Open-Closed Principle,OCP):软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。即在不修改已有代码的情况下,通过扩展来实现新的功能。 3. 里氏替换原则(Liskov Substitution Principle,LSP):子类型必须能够替换掉它们的父类型。即在使用基类对象的地方,可以用其子类对象来替代,而不会影响程序的正确性。 4. 接口隔离原则(Interface Segregation Principle,ISP):客户端不应该依赖它不需要的接口。即一个类对另一个类的依赖应该建立在最小的接口上。 5. 依赖倒置原则(Dependency Inversion Principle,DIP):高层模块不应该依赖低层模块,二者都应该依赖于抽象。即要针对接口编程,而不是针对实现编程。 6. 迪米特法则(Law of Demeter,LoD):一个对象应该对其他对象有尽可能少的了解,即一个对象应该只与其直接的朋友通信,而不与陌生的对象通信。 依赖倒置原则六大设计原则的一项,它强调高层模块不应该依赖低层模块,二者都应该依赖于抽象。具体来说,依赖倒置原则要求: 1. 高层模块不应该直接依赖于低层模块的具体实现,而应该依赖于抽象接口。 2. 抽象接口应该由高层模块定义,低层模块去实现。 3. 通过依赖倒置,可以降低模块间的耦合度,提高代码的可维护性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值