概念
-
- 依赖倒置原则的定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象。
- 依赖倒置原则的中心思想:抽象不应该依赖细节;细节应该依赖抽象。
- 依赖倒置原则的核心思想:针对接口编程,不要针对实现编程。
- 依赖倒置原则的优点:可以减少类间的耦合性、提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险。
实例
代码实例
-
Coisini.java
/**
* @Description 课程学习
* @date Dec 3, 12
* @version 1.0
*/
public class Coisini {
public void studyJavaCourse() {
System.out.println("在学习Java课程");
}
public void studyPythonCourse() {
System.out.println("在学习Python课程");
}
}
-
-
Test.java
/**
* @Description 测试类
* @date Dec 3, 12
* @version 1.0
*/
public class Test {
public static void main(String[] args) {
// 高层模块依赖低层模块,Test的修改是依赖于Coisini实现的
Coisini coisini = new Coisini();
coisini.studyJavaCourse();
coisini.studyPythonCourse();
}
}
- 输出结果
在学习Java课程
在学习Python课程
开闭原则的实现
-
ICourse.java
/**
* @Description 课程接口
* @date Dec 3, 2021
* @version 1.0
*/
public interface ICourse {
/**
* 学习课程
*/
void studyCourse();
}
-
-
JavaCourse.java
/**
* @Description Java课程
* @date Dec 3, 2021
* @version 1.0
*/
public class JavaCourse implements ICourse{
@Override
public void studyCourse() {
System.out.println("在学习Java课程");
}
}
-
-
PythonCourse.java
/**
* @Description Python课程
* @author coisini
* @date Dec 3, 2021
* @version 1.0
*/
public class PythonCourse implements ICourse{
@Override
public void studyCourse() {
System.out.println("在学习Python课程");
}
}
-
-
Coisini.java
public class Coisini {
/**
* 学习课程
* @param iCourse
*/
public void studyImoocCourse(ICourse iCourse) {
iCourse.studyCourse();
}
}
-
-
Test.java
/**
* @Description 依赖倒置原则测试类
* @date Dec 3, 12
* @version 1.0
*/
public class Test {
public static void main(String[] args) {
// 面向接口编程
Coisini coisini = new Coisini();
coisini.studyImoocCourse(new JavaCourse());
coisini.studyImoocCourse(new PythonCourse());
}
}
-
- 输出结果
在学习Java课程
在学习Python课程
-
- 类图变化如下
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iNwEzM4MGNwQDOxQGNzUWYxYzX3MTNwADM3AzLcJTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
-
- 依赖倒置原则的实现总结:程序要依赖于抽象接口,不要依赖于具体的实现,主要目的是降低耦合;以抽象为基础搭建起来的架构比以细节为基础搭建的架构更稳定