依賴倒置原則

2022-08-27 03:51:09 字數 962 閱讀 5752

1、上層模組不應該依賴底層模組,它們都應該依賴於抽象。

2、抽象不應該依賴於細節,細節應該依賴於抽象。

在依賴倒置原則中的倒置指的是和一般oo設計的思考方式完全相反。

舉個例子,現在你需要實現乙個比薩店,你第一件想到的事情是什麼?我想到的是乙個比薩店,裡面有很多具體的比薩,如:芝士比薩、素食比薩、海鮮比薩……

比薩店是上層模組,比薩是下層模組,如果把比薩店和它依賴的物件畫成一張圖,看起來是這樣:

正常依賴圖

沒錯!先從頂端開始,然後往下到具體類,但是,正如你看到的你不想讓比薩店理會這些具體類,要不然比薩店將全都依賴這些具體類。現在「倒置」你的想法……別從上層模組比薩店開始思考,而是從下層模組比薩開始,然後想想看能抽象化些什麼。你可能會想到,芝士比薩、素食比薩、海鮮比薩都是比薩,所以它們應該共享乙個pizza介面。對了,你想要抽象化乙個pizza。好,現在回頭重新思考如何設計比薩店。

依賴倒置後的圖

圖一的依賴箭頭都是從上往下的,圖二的箭頭出現了從下往上,依賴關係確實「倒置」了

依賴倒置原則的本質就是通過抽象(介面或抽象類)使各個類或模組的實現彼此獨立,不互相影響,實現模組間的松耦合。我們在專案中使用這個原則要遵循下面的規則:

1、每個類盡量都有介面或者抽象類,或者抽象類和介面兩都具備

2、變數的表面型別盡量是介面或者抽象類

3、任何類都不應該從具體類派生

4、盡量不要覆寫基類的方法

5、如果基類是乙個抽象類,而這個方法已經實現了,子類盡量不要覆寫。類間依賴的是抽象,覆寫了抽象方法,對依賴的穩定性會有一定的影響

6、結合黎克特制替換原則使用

參考:

依賴倒置原則

依賴倒置原則 為什麼會出現這個原則呢?q 所有的一切都源於變化,現在orm足夠強大了,看一下他的原始碼也會發現,工廠 介面的使用都是為了更好的擴充套件。舉個簡單的例子 你的老師讓你寫了乙個 豬 類,實現了他的移動方法,如下 public class pig public class client 第...

依賴倒置原則

1 抽象不應該依賴於具體,具體應該依賴於抽象。2 高層次模組不應該依賴於低層次模組,它們都應該依賴於抽象。對於乙個小賣部來說,有許多飲料,比如可樂 雪碧 橙汁 這時,我們把小賣部定義為乙個具體類,如果我們沒有選擇依賴倒置原則的話,我們就應該在小賣部中new coke new sprit new or...

依賴倒置原則

依賴倒置原則 說白了就是 針對介面程式設計。case 比如在 unity 中,為了使常用 可以復用,會把許多函式寫成程式集,每次做新專案的時候直接呼叫這些函式就可以。也是高層模組依賴低層模組 資源載入,當前專案是使用 resoucers 方式載入的 class resourcemanager 有一天...