一、依赖倒置原则简介
- 定义:高层模块不应该依赖底层模块,二者都应该依赖其抽象
- 抽象不应该依赖细节,细节应该依赖抽象
- 针对接口编程,不要针对实现编程
二、代码实现
public class Evan {
private Course course;
public void setCourse(Course course) {
this.course = course;
}
public void studyCourse(){
course.studyCourse();
}
}
public interface Course {
void studyCourse();
}
public class JavaCourse implements Course{
@Override
public void studyCourse() {
System.out.println("Evan 在学习Java课程");
}
}
public class FeCourse implements Course{
@Override
public void studyCourse() {
System.out.println("Evan 在学习前端课程");
}
}
public class PythonCourse implements Course {
@Override
public void studyCourse() {
System.out.println("Evan在学习Python课程");
}
}
public class DependencyInversionTest {
public static void main(String[] args) {
Evan evan = new Evan();
evan.setCourse(new JavaCourse());
evan.studyCourse();
evan.setCourse(new FeCourse());
evan.studyCourse();
evan.setCourse(new PythonCourse());
evan.studyCourse();
}
}
三、关于依赖倒置原则的理解