欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

依赖倒置原则笔记

程序员文章站 2024-03-16 22:13:10
...

依赖倒置原则笔记看如下一个例子:

pulic class Geely{

public void studyJavaCourse(){
System.out.println("Geely在学习Java");
}

public void studyFECourse(){
System.out.println("Geely在学习FE");
}

}
public class Test{

    
    public static void main(String[] args) {
        Geely geely = new Geely();
        geely.studyJavaCourse();
        geely.studyFECourse();
    }

}

现在要Geely要学习Python,就要按如下步骤:
先在Geely类增加studyPython方法

pulic class Geely{

public void studyJavaCourse(){
System.out.println("Geely在学习Java");
}

public void studyFECourse(){
System.out.println("Geely在学习FE");
}

public void studyPython(){
System.out.println("Geely在学习Python");
}

}

在主类调用:

public class Test{

    
    public static void main(String[] args) {
        Geely geely = new Geely();
        geely.studyJavaCourse();
        geely.studyFECourse();
        geely.studyPython();
    }

}

但这样做,使得高层Test类高度依赖底层Geely类的实现,不符合依赖倒置原则。
一般我们提倡面对接口编程,所以我们先建一个ICourse接口,

public interface ICourse {


    void studyCourse();

}

然后具体实现有三个类实现
1.Javacourse类

public class JavaCourse implements ICourse {

    @Override
    public void studyCourse() {
        System.out.println("Geely在学习Java课程");
    }
}

2.FECourse类

public class FECourse implements ICourse {
    @Override
    public void studyCourse() {
        System.out.println("Geely在学习FE课程");
    }

}

3.新增的PythonCourse类

public class PythonCourse implements ICourse {
    @Override
    public void studyCourse() {
        System.out.println("Geely在学习Python课程");
    }
}

Geely类,现在Geely想学什么课程,都不要动自己的内容(相对JavaCourse,FECoure等等来说是高级),不依赖具体的类(JavaCourse,PythonCourse等等),核心是面对接口编程。

public class Geely {

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

    private ICourse iCourse;

    public void studyImoocCourse(){
        iCourse.studyCourse();
    }

    
}

Test类

public class Test{

    public static void main(String[] args) {
        Geely geely = new Geely();
        geely.setiCourse(new JavaCourse());
        geely.studyImoocCourse();

        geely.setiCourse(new FECourse());
        geely.studyImoocCourse();

       geely.setiCourse(new PythonCourse());
        geely.studyImoocCourse();

    }


}

结构图如下:

依赖倒置原则笔记