依賴倒轉原則--學習筆記
依賴倒置原則定義
1、上層模組不應該依賴底層模組,它們都應該依賴於抽象。
2、抽象不應該依賴於細節,細節應該依賴於抽象。
首先,這個原則聽起來很像是“針對介面程式設計,不針對現實程式設計”,不是嗎?的確很相似,然而這裡更強調“抽象”。
依賴倒置原則,究竟倒置在哪裡?
在依賴倒置原則中的倒置指的是和一般OO設計的思考方式完全相反。
舉個例子,現在你需要實現一個比薩店,你第一件想到的事情是什麼?我想到的是一個比薩店,裡面有很多具體的比薩,如:芝士比薩、素食比薩、海鮮比薩……
比薩店是上層模組,比薩是下層模組,如果把比薩店和它依賴的物件畫成一張圖,看起來是這樣:
沒錯!先從頂端開始,然後往下到具體類,但是,正如你看到的你不想讓比薩店理會這些具體類,要不然比薩店將全都依賴這些具體類。現在“倒置”你的想法……別從上層模組比薩店開始思考,而是從下層模組比薩開始,然後想想看能抽象化些什麼。你可能會想到,芝士比薩、素食比薩、海鮮比薩都是比薩,所以它們應該共享一個Pizza介面。對了,你想要抽象化一個Pizza。好,現在回頭重新思考如何設計比薩店。
圖一的依賴箭頭都是從上往下的,圖二的箭頭出現了從下往上,依賴關係確實“倒置”了
另外,此例子也很好的解釋了“上層模組不應該依賴底層模組,它們都應該依賴於抽象。”,在最開始的設計中,高層模組PizzaStroe直接依賴低層模組(各種具體的Pizaa),調整設計後,高層模組和低層模組都依賴於抽象(Pizza)
依賴倒置原則的本質就是通過抽象(介面或抽象類)使各個類或模組的實現彼此獨立,不互相影響,實現模組間的鬆耦合。我們在專案中使用這個原則要遵循下面的規則:
1、每個類儘量都有介面或者抽象類,或者抽象類和介面兩都具備;
2、變數的表面型別儘量是介面或者抽象類;
3、任何類都不應該從具體類派生;
4、儘量不要覆寫基類的方法;
5、如果基類是一個抽象類,而這個方法已經實現了,子類儘量不要覆寫。類間依賴的是抽象,覆寫了抽象方法,對依賴的穩定性會有一定的影響;
6、結合里氏替換原則使用;
參考資料:
作者:陳琰AC
原文連結:https://www.jianshu.com/p/c3ce6762257c
作者:酷學大叔
原文連結:https://www.cnblogs.com/az4215/p/11462878.html
相關文章
- 軟體設計原則—依賴倒轉原則
- 設計原則-依賴反轉原則
- 設計原則之【依賴反轉原則】
- Laravel深入學習12 – 依賴倒置原則Laravel
- 3. 目標精通--用java寫設計模式:依賴倒轉原則Java設計模式
- 淺析依賴倒轉、控制反轉、IoC 容器、依賴注入。依賴注入
- net5學習筆記---依賴注入筆記依賴注入
- SOLDI原則之DIP:依賴倒置原則
- 什麼是依賴倒置原則
- 依賴倒置原則(Dependence Inversion Principle)
- 學習記錄-Laravel 核心 依賴注入 控制反轉 反射Laravel依賴注入反射
- 完整的PHP依賴倒置原則例程PHP
- python3 依賴倒置原則示例Python
- SpringMVC學習筆記---依賴配置和簡單案例實現SpringMVC筆記
- MySQL學習筆記:組合索引-最左原則MySql筆記索引
- ASP.NET Core 學習筆記 第二篇 依賴注入ASP.NET筆記依賴注入
- Laravel底層學習筆記01 - 框架核心,依賴注入,閉包Laravel筆記框架依賴注入
- Angular 依賴注入學習筆記之工廠函式的用法Angular依賴注入筆記函式
- 反射、特性、依賴注入、介面隔離原則反射依賴注入
- CMake構建學習筆記14-依賴庫管理工具筆記
- 依賴倒置原則的基本用法和介紹
- 面象物件設計6大原則之五:依賴倒置原則物件
- C#設計模式學習筆記:設計原則C#設計模式筆記
- JavaScript正則學習筆記JavaScript筆記
- 嘻哈說:設計模式之依賴倒置原則設計模式
- Spring學習(三)依賴注入Spring依賴注入
- spring框架學習 依賴注入Spring框架依賴注入
- 原根學習筆記筆記
- SOLID原則筆記Solid筆記
- Python學習筆記之 Python設計思想&設計原則Python筆記
- ASP.NET Core 學習筆記 第三篇 依賴注入框架的使用ASP.NET筆記依賴注入框架
- 【Vue原始碼學習】依賴收集Vue原始碼
- 學習筆記:深度學習中的正則化筆記深度學習
- Kubernetes 學習筆記-- kafka往couchdb裡倒東西筆記Kafka
- .NET IoC模式依賴反轉(DIP)、控制反轉(Ioc)、依賴注入(DI)模式依賴注入
- 依賴反轉原則DIP 與使用了Repository模式的asp.net core專案結構模式ASP.NET
- HexMap學習筆記(四)——不規則化筆記
- 學習筆記——正則匹配方法整理筆記