學習筆記(01):第1章 軟件架構設計原則-2.Dependence Inversion Principle 依賴倒置原則...

立即學習:https://edu.csdn.net/course/play/28942/403589?utm_source=blogtoedu

依賴倒置原則:Dependence Inversion Principle

定義:高層模塊不依賴低層模塊,二者都應該依賴其抽象

抽象不應該依賴細節、細節應該依賴抽象

針對接口編程、不要針對實現編程

優點:可以減少類之間的耦合性、提高系統的穩定性、提高代碼的可讀性和可維護性,降低修改程序所造成的風險

例:小明學習

關於小明學習這個事情,首先要有小明(類),小明有一個學習的動作(方法),

class XiaoMing{
    
    void study(){
    }
}

 

我們抽象出一個學習的接口,作爲參數傳入小明學習的這個動作中,

interface ICourse(){
    void study();
}
​
class XiaoMing{
    void study(ICourse icourse){
        icourse.study();
    }
}

 

當小明需要學習某門課程的時候,我們先通過實現學習接口的方式,實例化學習的課程

class JavaCourse implements ICourse{
    void study(){
        System.out.println("學習java");
    }
}

 

然後將實例後的課程學習作爲參數(依賴)傳遞給小明、讓小明來進行學習的動作,

class XiaoMing{
    
    private ICourse icourse;
    
    public XiaoMing(ICourse icourse){
        this.icourse = icourse;
    }
    
    void study(){
        icourse.study();
    }
}

 

達到小明學習的目的

class Test{
    public static void main(String[] args) {
        XiaoMing xiaoMing = new XiaoMing(new JavaCourse);
        xiaoMing.study();
    }
}

當小明爲單例時,我們不能通過構造方法來進行傳遞參數,此時我們需要給小明一個選擇(set方法)

class XiaoMing{
    
    private ICourse icourse;
    
    public void setiCourse(ICourse icourse){
        this.icourse = icourse;
    }
    
    void study(){
        icourse.study();
    }
}
​
class Test{
    public static void main(String[] args) {
        XiaoMing xiaoMing = new XiaoMing();
        xiaoMing.setiCourse(new JavaCourse);
        xiaoMing.study();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章