當前位置:
首頁 > 知識 > 對於設計原則——依賴倒轉原則的一些個人理解

對於設計原則——依賴倒轉原則的一些個人理解

依賴倒轉原則

什麼是依賴倒轉原則呢?

先舉個例子,用造汽車舉例子:

假如,造汽車的第一步是:造車輪

第二步是:根據車輪的大小造車底

第三步是:根據車底的大小造車身

最後一步是:根據車身的大小造出汽車。

那麼這個過程中的依賴關係是:汽車依賴於車身的設計,車身依賴於車底的設計,車底依賴於車輪的設計。

粗略的看,這樣的設計邏輯是沒有問題的,各部分「零件」都互相依賴著,最後也能夠把汽車組裝成功,可是,這樣的設計邏輯存在一個很大的問題,是什麼呢?

——可維護性差

假如,現在和你們造汽車的工廠對接的客戶說,我要求現在生產的汽車輪胎能夠大個尺寸,那麼就會有一個很嚴重的問題,就是要重新的設計車底,車身,汽車,這可以說是「牽一髮而動全身」。

那麼這個時候,如果我們換一種思維,先造汽車,再造車身,其次造車底,最後造車輪。這樣子的話,如果造汽車的依賴關係就倒轉過來了,變成了:車輪依賴於車底的設計,車底依賴於車身的設計,車身依賴於汽車的設計。

這時候要是改動輪子的話是不是就不需要改動汽車了?嗯…沒錯,粗略看過去是這樣的,可是,還是有問題啊,如果我要直接改動汽車呢?那不是還是得全部都要改動?是的,沒錯,全部都要改動。

那我舉上面的例子有什麼用呢?嗯,有大用哦;網上百度一波,依賴倒轉原則它的概念是:

1:高層模塊不應該依賴於底層模塊,兩者都應該依賴於其抽象。

2:抽象不應該依賴具體實現,具體實現應該依賴抽象(看介面和實現類的關係)。

第一條概念說兩者依賴於其抽象,那麼在上面的造汽車,不管是從輪子(底層)開始,還是汽車(高層)開始都是從具體實現下手的,所以上面的舉例不是依賴倒轉原則。

其依賴倒轉的核心思想是:面向介面編程

接下來造汽車的例子我就放在編程中說了:

首先,要創建四個介面,分別是,輪子,車底,車身,汽車。這四個介面里各自約定一些方法,比如說輪子的介面中,寫一個帶參的輪子尺寸方法。然後比如造汽車,造的是小轎車輪子的話,那麼寫一個實現這個介面的實現類,類名是小轎車車輪。要是現在突然又有新的需求,要造卡車輪子,那再寫一個實現類來實現這個車輪的介面即可,其實這裡用到了一個其他的原則(開閉原則:對修改關閉,對擴展開放),介面中的方法呢,是之前約定好的東西,是不允許修改的,這裡的不允許不是指真的不允許,而是有悖於設計原則的開閉原則,一個簡單又好記的方法就是:介面的存在最主要的目的就是為了便於擴展、和維護。

總之,依賴倒轉原則是針對介面的,高層模塊和底層模塊都是依賴於抽象(介面)的。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

推進微服務落地的 7 個步驟
當Golang遇到高並發秒殺,世界開始變得簡單

TAG:千鋒JAVA開發學院 |