01-03.依賴倒轉原則(Dependence Inversion Principle)

一、基本介紹
依賴倒轉原則(Dependence Inversion Principle),他有五個點須要咱們去掌握,以下:
(1)高層模塊不該該依賴低層模塊,兩者都應該依賴其抽象(何爲抽象:抽象類或者接口咱們就稱爲抽象,換言之就是能夠去依賴接口,也能夠去依賴抽象類,可是不能去依賴一個具體的子類)。
(2)抽象不該該依賴細節,細節應該依賴抽象。
(3)依賴倒轉(倒置)的中心思想是面向接口編程
(4)依賴倒轉原則是基於怎樣的理念來設計的呢?咱們程序員在開發的過程當中,發現有這樣的一種規律:相對於細節的多變性,咱們抽象的東西要相對穩定的多(也就是說高層的相對來講要穩定一些)。以抽象爲基礎搭建的架構比以細節爲基礎的架構要穩定的多。所以在java中,抽象指的是接口或抽象類(這也是爲何咱們在後面學設計模式的時候,每每他的高層模塊都是接口或者是抽象類),而細節就是具體的實現類。
(5)使用接口或抽象類的目的是制定好規範(這也就是咱們常常所說的接口和抽象類的價值在什麼地方呢?在於設計),而不涉及任何具體的操做,把展示細節的任務交給他們的實現類也就是他的子類)去完成。java

二、應用案例,以下步驟:
下面的案例咱們先演示不用依賴倒轉會出現什麼問題,使用了依賴倒轉原則又會讓咱們程序有什麼好的地方。因此咱們要有一個場景,說有一個Person類,他裏有一個接收消息的功能。程序員

(1)方案一使用傳統方法實現Person類接受消息編程

 

 

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

 

 

 三、依賴關係傳遞的三種方式和應用案例架構

關於依賴關係咱們後面UML類圖學習的時候還要細說一下,這們咱們先要明白依賴關係在咱們代碼當中有三種方式傳遞值(對象),以下:學習

 

四、依賴倒轉原則的注意事項和細節:
(1)低層模塊儘可能都要有抽象類或接口(好比A類是個子類,那麼他的上一級儘可能繼承抽象類或實現接口,儘可能不要讓一個類孤零零在哪裏,除非有特殊狀況),或者二者都有,程序穩定性更好。
(2)變量的聲明類型儘可能是抽象類或接口, 這樣咱們的變量引用和實際對象之間,就存在一個緩衝層,利於程序擴展和優化,如上面的「三、依賴關係傳遞的三種方式和應用案例」。
(3)繼承時遵循里氏替換原則。優化

相關文章
相關標籤/搜索