寫在前邊 《庚子年記》 以前總是聽說: 今年是經濟形勢最差的一年,各企業都準備過冬。沒想到2020僅一個月就打敗了最難過的2019。 筆者於2019年底裸辭,原計劃2020春招再工作,怎耐遇上了武漢疫情。舉國閉門謝客,當然也包括往日的金三銀四。各大小企業紛紛縮減開支,立求生存下去,求職市場略顯慘淡。 ...
寫在前邊
《庚子年記》 以前總是聽說: 今年是經濟形勢最差的一年,各企業都準備過冬。沒想到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)
公眾號 【當我遇上你】