設計模式--概述

寫在前邊

《庚子年記》 之前老是據說: 今年是經濟形勢最差的一年,各企業都準備過冬。沒想到2020僅一個月就戰勝了最難過的2019。 筆者於2019年末裸辭,原計劃2020春招再工做,怎耐趕上了武漢疫情。舉國閉門謝客,固然也包括往日的金三銀四。各大小企業紛紛縮減開支,立求生存下去,求職市場略顯慘淡。值此之際,得到了可貴的學習時間,想趁着自由的時光鞏固下知識,打牢基本功。程序員

回首之前作過的項目,愈發頻繁地以爲本身寫的代碼不夠優雅,遂決定研讀一下設計模式相關。在不少場景你們力求破,不破不立。但在軟件上,我的以爲立更重要: 約定大於配置。要立規範,要遵照範式,要引入設計模式等。遂從新開始學習、總結。一是爲往後本身回顧總結,二是供一樣初入設計模式大門的程序員們參考學習。做者水平有限,文中如有錯漏之處,還望不吝指出。設計模式

設計原則

1. 開閉原則

開閉原則的意思是:對擴展開放,對修改關閉。程序應該經過擴展來實現變化,而不是經過修改已有代碼來實現一個擴展和變化。簡言之,是爲了使程序的擴展性好,易於維護和升級。架構

2. 里氏替換原則

里氏代換原則是面向對象設計的基本原則之一。 里氏代換原則中說,任何基類能夠出現的地方,子類必定能夠出現。LSP 是繼承複用的基石,只有當派生類能夠替換掉基類,且軟件單位的功能不受到影響時,基類才能真正被複用,而派生類也可以在基類的基礎上增長新的行爲。里氏代換原則是對開閉原則的補充。實現開閉原則的關鍵步驟就是抽象化,而基類與子類的繼承關係就是抽象化的具體實現,因此里氏代換原則是對實現抽象化的具體步驟的規範。學習

3. 依賴倒置原則

一、高層模塊不該該依賴低層模塊,二者都應該依賴其抽象;ui

二、抽象不該該依賴細節;設計

三、細節應該依賴抽象。代理

4. 接口隔離原則

這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。它還有另一個意思是:下降類之間的耦合度。因而可知,其實設計模式就是從大型軟件架構出發、便於升級和維護的軟件設計思想,它強調下降依賴,下降耦合。server

也就是僅僅須要提供客戶端須要的接口,其實就是客戶端不該該依賴它不須要的接口;一個類對另外一個類的依賴應該創建在最小的接口上,就好比說你有一個抽象類裏面有不少接口,也就是說防止一個抽象類中彙總了不少的抽象方法,而要分開來其實就是一個接口的隔離。根據咱們的需求去實現該實現的方法,不去實現其餘方法,其實就是接口隔離原則。對象

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)
公衆號【當我趕上你】
相關文章
相關標籤/搜索