概念
-
- 依賴倒置原則的定義:高層子產品不應該依賴低層子產品,二者都應該依賴其抽象。
- 依賴倒置原則的中心思想:抽象不應該依賴細節;細節應該依賴抽象。
- 依賴倒置原則的核心思想:針對接口程式設計,不要針對實作程式設計。
- 依賴倒置原則的優點:可以減少類間的耦合性、提高系統穩定性,提高代碼可讀性和可維護性,可降低修改程式所造成的風險。
執行個體
代碼執行個體
-
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課程
-
- 類圖變化如下
-
- 依賴倒置原則的實作總結:程式要依賴于抽象接口,不要依賴于具體的實作,主要目的是降低耦合;以抽象為基礎搭建起來的架構比以細節為基礎搭建的架構更穩定