物件導向設計原則之依賴倒轉原則

2021-09-12 22:33:02 字數 1993 閱讀 2427

依賴倒轉原則(dependence inversion principle, dip)的定義:高層模組不應該依賴於低層模組,它們都應該依賴於抽象。抽象不應該依賴於細節,細節應該依賴於抽象。

另一種表述:要針對介面程式設計,不要針對實現程式設計。

對各種概念進行乙個描述:

依賴倒置原則的優點:

(參考自設計模式六大原則例子(四)-- 依賴倒置原則(dip)例子)

依賴倒轉原則就是指:**要依賴於抽象的類,而不依賴於具體的類;要針對介面或抽象類程式設計,而不是針對具體類程式設計。也就是說,在程式**中傳遞引數時或在組合聚合關係中,盡量引用層次高的抽象類,即使用介面和抽象類進行變數型別宣告、引數型別宣告、方法返回型別宣告,以及資料型別的轉換等,而不要用具體類來做這些事情。為了確保該原則的應用,乙個具體類應當只實現介面和抽象類中宣告過的方法,而不要給出多餘的方法,否則將無法呼叫到在子類中增加的新方法。

依賴倒轉原則的常用實現方式之一是在**中使用抽象類,而將具體類放在配置檔案中。也就是說要推遲對具體類的定義,盡量在**中針對抽象程式設計,這樣有助於設計出能夠快速作出變更的解決方案,以便應對專案需求的變化。

下面介紹一下依賴倒轉原則中經常提到的兩個概念——類之間的耦合和依賴注入。

在物件導向系統中,兩個類之間通常可以發生三種不同的耦合關係(依賴關係):

(1)零耦合關係:如果兩個類之間沒有任何耦合關係,稱之為零耦合

(2)具體耦合關係:具體耦合發生在兩個具體類中(可例項化的類)之間,由乙個類對另乙個具體類例項的直接引用產生

(3)抽象耦合關係:抽象耦合關係發生在乙個具體類和乙個抽象類之間,也可以發生在兩個抽象類之間,使兩個發生關係的類之間存在最大的靈活性。由於在抽象耦合中至少有一端是抽象的,因此可以通過不同的具體實現來進行擴充套件

依賴倒轉原則要求客戶端依賴於抽象耦合,以抽象方式耦合是依賴倒轉原則的關鍵。由於乙個抽象耦合關係總要涉及具體類從抽象類繼承,並且需要保證在任何引用到基類的地方都可以替換成其子類,因此,黎克特制代換原則是依賴倒轉原則的基礎。

依賴注入就是將乙個類的物件傳入另乙個類,注入時應該盡量注入父類物件,而在程式執行時再通過子類物件來覆蓋父類物件,依賴注入有以下三種方式:

(1)構造注入(constructor injection)

通過建構函式注入例項變數

public inte***ce abstractbook 

public inte***ce abstractreader

public class concretebook implements abstractbook

}public class concretereader implements abstractreader

public void read()

}

(2)設值注入(setter injection)

通過setter方法注入例項變數

public inte***ce abstractbook 

public inte***ce abstractreader

public class concretebook implements abstractbook

}public class concretereader implements abstractreader

public void read()

}

(3)介面注入(inte***ce injection)

通過介面方法注入例項變數

public inte***ce abstractbook 

public inte***ce abstractreader

public class concretebook implements abstractbook

}public class concretereader implements abstractreader

}

物件導向設計原則之依賴倒轉原則

如果說開閉原則是物件導向設計的目標的話,那麼依賴倒轉原則就是物件導向設計的主要實現機制之一,它是系統抽象化的具體實現。依賴倒轉原則是robert c.martin在1996年為 c reporter 所寫的專欄engineering notebook的第三篇,後來加入到他在2002年出版的經典著作 ...

物件導向設計原則之依賴倒轉原則

如果說開閉原則是物件導向設計的目標的話,那麼依賴倒轉原則就是物件導向設計的主要實現機制之一,它是系統抽象化的具體實現。依賴倒轉原則是robert c.martin在1996年為 c reporter 所寫的專欄engineering notebook的第三篇,後來加入到他在2002年出版的經典著作 ...

物件導向設計原則之依賴倒轉原則

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!如果說開閉原則是物件導向設計的目標的話,那麼依賴倒轉原則就是物件導向設計的主要實現機制之一,它是系統抽象化的具體實現。依賴倒轉原則是robert c.martin在1996年為 c reporter 所寫的專欄engineering noteboo...