一、設計模式的分類
總體來說設計模式分為三大類:
建立型模式:共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式:共七種:介面卡模式、裝飾器模式、**模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式:共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。
其實還有兩類:並髮型模式和執行緒池模式,用乙個來整體描述一下:
並髮型模式和執行緒池模式
二:設計模式六大原則
總原則:開閉原則(open close principle)
開閉原則就是說對擴充套件開放,對修改關閉。在程式需要進行拓展的時候,不能去修改原有的**,而是要擴充套件原有**,實現乙個熱插拔的效果。所以一句話概括就是:為了使程式的擴充套件性好,易於維護和公升級。想要達到這樣的效果,我們需要使用介面和抽象類等,後面的具體設計中我們會提到這點。
1、單一職責原則
不要存在多於乙個導致類變更的原因,也就是說每個類應該實現單一的職責,如若不然,就應該把類拆分。
2、黎克特制替換原則(liskov substitution principle)
黎克特制代換原則(liskov substitution principle lsp)物件導向設計的基本原則之一。 黎克特制代換原則中說,任何基類可以出現的地方,子類一定可以出現。 lsp是繼承復用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。黎克特制代換原則是對「開-閉」原則的補充。實現「開-閉」原則的關鍵步驟就是抽象化。而基類與子類的繼承關係就是抽象化的具體實現,所以黎克特制代換原則是對實現抽象化的具體步驟的規範。—— from baidu 百科
歷史替換原則中,子類對父類的方法盡量不要重寫和過載。因為父類代表了定義好的結構,通過這個規範的介面與外界互動,子類不應該隨便破壞它。
3、依賴倒轉原則(dependence inversion principle)
這個是開閉原則的基礎,具體內容:面向介面程式設計,依賴於抽象而不依賴於具體。寫**時用到具體類時,不與具體類互動,而與具體類的上層接**互。
4、介面隔離原則(inte***ce segregation principle)
這個原則的意思是:每個介面中不存在子類用不到卻必須實現的方法,如果不然,就要將介面拆分。使用多個隔離的介面,比使用單個介面(多個介面方法集合到乙個的介面)要好。
5、迪公尺特法則(最少知道原則)(demeter principle)
就是說:乙個類對自己依賴的類知道的越少越好。也就是說無論被依賴的類多麼複雜,都應該將邏輯封裝在方法的內部,通過public方法提供給外部。這樣當被依賴的類變化時,才能最小的影響該類。
最少知道原則的另乙個表達方式是:只與直接的朋友通訊。類之間只要有耦合關係,就叫朋友關係。耦合分為依賴、關聯、聚合、組合等。我們稱出現為成員變數、方法引數、方法返回值中的類為直接朋友。區域性變數、臨時變數則不是直接的朋友。我們要求陌生的類不要作為區域性變數出現在類中。
6、合成復用原則(composite reuse principle)
原則是盡量首先使用合成/聚合的方式,而不是使用繼承。
三、23種設計模式目錄總覽
23種設計模式全解析 拆分 1
總體來說設計模式分為三大類 建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模式...
Python 23種設計模式全(python例子)
建立型1.factory method 工廠方法 2.abstract factory 抽象工廠 3.builder 建造者 4.prototype 原型 5.singleton 單例 結構型6.adapter class object 介面卡 7.bridge 橋接 8.composite 組合 ...
23種設計模式(3) 抽象工廠模式
5.抽象工廠模式的缺點 1.概念 首先來理解下兩個概念 2.抽象工廠模式與工廠方法模式的區別 抽象工廠模式是工廠方法模式的公升級版本,它與工廠方法模式的區別就在於,工廠方法模式針對的是乙個產品等級結構 而抽象工廠模式則是針對的多個產品等級結構。也就是說,工廠方法模式提供的所有產品都是衍生自同乙個介面...