天天看點

設計原則 - 依賴倒置原則

概念

  • 依賴倒置原則的定義:高層子產品不應該依賴低層子產品,二者都應該依賴其抽象。
  • 依賴倒置原則的中心思想:抽象不應該依賴細節;細節應該依賴抽象。
  • 依賴倒置原則的核心思想:針對接口程式設計,不要針對實作程式設計。
  • 依賴倒置原則的優點:可以減少類間的耦合性、提高系統穩定性,提高代碼可讀性和可維護性,可降低修改程式所造成的風險。

執行個體

代碼執行個體

  • ​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課程       
  • 類圖變化如下
設計原則 - 依賴倒置原則
  • 依賴倒置原則的實作總結:程式要依賴于抽象接口,不要依賴于具體的實作,主要目的是降低耦合;以抽象為基礎搭建起來的架構比以細節為基礎搭建的架構更穩定

源碼