1、基本介紹
依賴倒轉原則(Dependence Inversion Principle),他有五個點需要我們去掌握,如下:
(1)高層模塊不應該依賴低層模塊,二者都應該依賴其抽象(何為抽象:抽象類或者介面我們就稱為抽象,換言之就是可以去依賴介面,也可以去依賴抽象類,但是不能去依賴一個具體的子類),
(2)抽象不應該依賴細節,細節應該依賴抽象,
(3)依賴倒轉(倒置)的中心思想是面向介面編程,
(4)依賴倒轉原則是基于怎樣的理念來設計的呢?我們程式員在開發的程序中,發現有這樣的一種規律:相對于細節的多變性,我們抽象的東西要相對穩定的多(也就是說高層的相對來說要穩定一些),以抽象為基礎搭建的架構比以細節為基礎的架構要穩定的多,因此在java中,抽象指的是介面或抽象類(這也是為什么我們在后面學設計模式的時候,往往他的高層模塊都是介面或者是抽象類),而細節就是具體的實作類,
(5)使用介面或抽象類的目的是制定好規范(這也就是我們經常所說的介面和抽象類的價值在什么地方呢?在于設計),而不涉及任何具體的操作,把展現細節的任務交給他們的實作類(也就是他的子類)去完成,
2、應用案例,如下步驟:
下面的案例我們先演示不用依賴倒轉會出現什么問題,使用了依賴倒轉原則又會讓我們程式有什么好的地方,所以我們要有一個場景,說有一個Person類,他里有一個接收訊息的功能,
(1)方案一使用傳統方法實作Person類接受訊息

(2)方案二使用依賴倒轉原則進行優化

3、依賴關系傳遞的三種方式和應用案例
關于依賴關系我們后面UML類圖學習的時候還要細說一下,這們我們先要明白依賴關系在我們代碼當中有三種方式傳遞值(物件),如下:

4、依賴倒轉原則的注意事項和細節:
(1)低層模塊盡量都要有抽象類或介面(比如A類是個子類,那么他的上一級盡量繼承抽象類或實作介面,盡量不要讓一個類孤零零在哪里,除非有特殊情況),或者兩者都有,程式穩定性更好,
(2)變數的宣告型別盡量是抽象類或介面, 這樣我們的變數參考和實際物件之間,就存在一個緩沖層,利于程式擴展和優化,如上面的“3、依賴關系傳遞的三種方式和應用案例”,
(3)繼承時遵循里氏替換原則,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/228937.html
標籤:其他
上一篇:Java中的單例模式最全決議
