依赖倒置原则
定义
- 高层模块不应该依赖底层模块,二者都应该依赖其抽象
- 抽线不应该依赖细节,细节应该依赖于抽象
- 针对接口编程,而不是针对实现编程
优点
- 可以减少类之间的耦合性,提高系统的稳定性,提高代码的可读性和维护性,可降低修改程序所造成的风险
代码示例
/**
* 依赖倒置原则
*/
public class Dependent {
public static void main(String[] args) {
Jack jack = new Jack();
jack.setCourse(new JavaCourse());
jack.StudyCourse();
jack.setCourse(new FECourse());
jack.StudyCourse();
jack.setCourse(new PythonCourse());
jack.StudyCourse();
}
}
/**
* 课程
*/
interface Course {
void studyCourse();
}
/**
* java课程
*/
class JavaCourse implements Course {
@Override
public void studyCourse() {
System.out.println("jack在学习java课程");
}
}
/**
* FE课程
*/
class FECourse implements Course {
@Override
public void studyCourse() {
System.out.println("jack在学习FE课程");
}
}
/**
* Python课程
*/
class PythonCourse implements Course {
@Override
public void studyCourse() {
System.out.println("jack在学习Python课程");
}
}
class Jack {
private Course course;
public void setCourse(Course course) {
this.course = course;
}
public void StudyCourse() {
course.studyCourse();
}
}