寫在前邊
《庚子年記》 以前總是聽說: 今年是經濟形勢最差的一年,各企業都準備過冬,沒想到2020僅一個月就打敗了最難過的2019, 筆者于2019年底裸辭,原計劃2020春招再作業,怎耐遇上了武漢疫情,舉國閉門謝客,當然也包括往日的金三銀四,各大小企業紛紛縮減開支,立求生存下去,求職市場略顯慘淡,值此之際,獲得了難得的學習時間,想趁著自由的時光鞏固下知識,打牢基本功,
回首以前做過的專案,愈發頻繁地覺得自己寫的代碼不夠優雅,遂決定研讀一下設計模式相關,在很多場景大家力求破,不破不立,但在軟體上,個人覺得立更重要: 約定大于配置,要立規范,要遵守范式,要引入設計模式等,遂重新開始學習、總結,一是為日后自己回顧總結,二是供同樣初入設計模式大門的程式員們參考學習,作者水平有限,文中若有錯漏之處,還望不吝指出,
設計原則
1. 開閉原則
開閉原則的意思是:對擴展開放,對修改關閉,程式應該通過擴展來實作變化,而不是通過修改已有代碼來實作一個擴展和變化,簡言之,是為了使程式的擴展性好,易于維護和升級,
2. 里氏替換原則
里氏代換原則是面向物件設計的基本原則之一, 里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現,LSP 是繼承復用的基石,只有當派生類可以替換掉基類,且軟體單位的功能不受到影響時,基類才能真正被復用,而派生類也能夠在基類的基礎上增加新的行為,里氏代換原則是對開閉原則的補充,實作開閉原則的關鍵步驟就是抽象化,而基類與子類的繼承關系就是抽象化的具體實作,所以里氏代換原則是對實作抽象化的具體步驟的規范,
3. 依賴倒置原則
1、高層模塊不應該依賴低層模塊,兩者都應該依賴其抽象;
2、抽象不應該依賴細節;
3、細節應該依賴抽象,
4. 介面隔離原則
這個原則的意思是:使用多個隔離的介面,比使用單個介面要好,它還有另外一個意思是:降低類之間的耦合度,由此可見,其實設計模式就是從大型軟體架構出發、便于升級和維護的軟體設計思想,它強調降低依賴,降低耦合,
也就是僅僅需要提供客戶端需要的介面,其實就是客戶端不應該依賴它不需要的介面;一個類對另一個類的依賴應該建立在最小的介面上,就比如說你有一個抽象類里面有很多介面,也就是說防止一個抽象類中匯總了很多的抽象方法,而要分開來其實就是一個介面的隔離,根據我們的需求去實作該實作的方法,不去實作其他方法,其實就是介面隔離原則,
5. 迪米特法則
又稱最少知道原則,如果兩個類不必彼此直接通訊,那么這兩個類就不應該直接發生作用,這就要求我們在設計類的時候,盡量降低類的成員的訪問權限,它的根本思想其實也是松耦合,
6. 單一職責原則
盡量使用物件組合,而不是繼承來達到復用的目的,這樣可以降低類與類之間的耦合度
模式分類
設計模式根據目的可以分為三大類,分別是創建型設計模式、行為型設計模式以及結構型設計模式, 創建型模式涉及到將物件實體化,這類模式都提供一個方法,將客戶從所需要實體化的物件中解藕, 行為型模式涉及到類和物件如何互動及分配職責, 結構型模式可以讓你把類或物件組合到更大的結構中,
創建型設計模式
- 單例模式(Singleton)
- 構建模式(Builder)
- 原型模式(Prototype)
- 抽象工廠模式(Abstract Factory)
- 工廠方法模式(Factory Method)
行為設計模式
- 策略模式(Strategy)
- 狀態模式(State)
- 責任鏈模式(Chain of Responsibility)
- 解釋器模式(Interpreter)
- 命令模式(Command)
- 觀察者模式(Observer)
- 備忘錄模式(Memento)
- 迭代器模式(Iterator)
- 模板方法模式(Template Method)
- 訪問者模式(Visitor)
- 中介者模式(Mediator)
結構型設計模式
- 裝飾者模式(Decorator)
- 代理模式(Proxy)
- 組合模式(Composite)
- 橋連接模式(Bridge)
- 配接器模式(Adapter)
- 享元模式(Flyweight)
- 外觀模式(Facade)
公眾號 【當我遇上你】
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/22710.html
標籤:設計模式
上一篇:常見的軟體生存周期模型
下一篇:10 分鐘從零搭建個人博客
