设计模式的五大原则(二)

依赖倒置原则

优点:可以减少类间的耦合性丶提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险,Spring的 IOC DI 依赖注入也采用了依赖倒置

生活中的的依赖倒置原则:

例如说:春运都回家,但是回家的地点则不同,那每个人到站不同,但是都会从12306买票回家

代码中演示依赖倒置

我拿课程去举例子:
接下来创建一个接口ICourse,抽象方法学习课程

public interface ICourse {
    void studyCourse();
}

有不同的课程,我想学习哪一个 接下来创建Java课程 ,前端课程,Python课程

public class JavaCourse implements ICourse {
    public void studyCourse() {
        System.out.println(" 在学习Java课程");
    }
}
public class PythonCourse implements ICourse {
    public void studyCourse() {
        System.out.println(" 在学习 Python");
    }
}
public class FECourse implements ICourse {
    public void studyCourse() {
        System.out.println(" 在学习前端课程");
    }
}

我在网上学习有我自己的账号

public class QJC {
    private ICourse iCourse;

    public QJC(ICourse iCourse) {
        this.iCourse = iCourse;
    }
    public void setiCourse(ICourse iCourse) {
        this.iCourse = iCourse;
    }
    public void studyICourse(){
        iCourse.studyCourse();
    }
}

接下来进行代码演示

public class Test {
    public static void main(String[] args) {
        /*没有抽象  导致类 经常修改  V1*/
       /* QJC qjc=new QJC();
        qjc.studyFECourse();
        qjc.studyJavaCourse();
        qjc.studyPythonCourse();*/
       /*通过方法注入  v2*/
       /* QJC qjc=new QJC();
        qjc.studyICourse(new JavaCourse());
        qjc.studyICourse(new FECourse());
        qjc.studyICourse(new PythonCourse());*/
        /*构造器  注入  v3*/
    /*   QJC qjc=new QJC(new JavaCourse());
       qjc.studyICourse();
        QJC fe=new QJC(new FECourse());
        fe.studyICourse();
        QJC py=new QJC(new PythonCourse());
        py.studyICourse();*/

        QJC qjc=new QJC(new JavaCourse());
        qjc.studyICourse();
        qjc.setiCourse(new PythonCourse());
        qjc.studyICourse();
    }
}

这样能够实现耦合度降低,就算新增一个课程也不需要修改原来的代码,只需要实现ICourse方法,将其进行注入调用studyICourse() 就可以学习
UML图解:
依赖倒置原则
第三章节:单一原则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值