23 種設計模式C++實現

設計模式的分類

總體來說設計模式分爲三大類:

創建型模式,共五種:單例模式原型模式工廠方法模式抽象工廠模式建造者模式

結構型模式,共七種:適配器模式裝飾器模式代理模式外觀模式橋接模式組合模式享元模式

行爲型模式,共十一種:策略模式模板方法模式觀察者模式迭代器模式責任鏈模式命令模式備忘錄模式狀態模式訪問者模式中介者模式解釋器模式

其實還有兩類:併發型模式和線程池模式。

下面對23種設計模式做一個概括性的介紹

一、創建型模式

1、單例模式:這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的對象(單例類只能有一個實例)

2、原型模式:用一個已經創建的實例作爲原型,通過複製該原型對象來創建一個和原型相同或相似的新對象。

3、工廠方法模式:核心工廠類不再負責所有產品的創建,而是將具體創建的工作交給子類去做,成爲一個抽象工廠角色,僅負責給出具體工廠類必須實現的接口,而不接觸哪一個產品類應當被實例化這種細節

4、抽象工廠模式:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類

5、建造者模式:將一個複雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示

二、結構型模式

1、適配器模式、將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。

2、裝飾器模式、動態地給一個對象添加一些額外的職責。就增加功能來說,裝飾器模式相比生成子類更爲靈活。好處就是把核心功能和裝飾功能區分開來了

3、代理模式、:代理模式給某一個對象提供一個代理對象,並由代理對象控制對原對象的訪問。通俗的來講代理模式就是我們生活中常見的中間人。

4、外觀模式、用一句話說明就是分層設計,爲複雜的模塊套個殼~,官方說法是爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用

5、橋接模式、策略模式定義一系列的算法,把它們一個個封裝起來,並且使它們可相互替換。該模式使得算法可獨立於使用它的客戶而變化

6、組合模式、又叫部分整體模式,是用於把一組相似的對象當作一個單一的對象。組合模式依據樹形結構來組合對象,用來表示部分以及整體層次。

7、享元模式。如果一個系統中存在多個相同的對象,那麼只需共享一份對象的拷貝,而不必爲每一次使用都創建新的對象。

三、行爲型模式

1、策略模式、策略模式定義一系列的算法,把它們一個個封裝起來,並且使它們可相互替換。該模式使得算法可獨立於使用它的客戶而變化。

2、模板方法模式、一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行

3、觀察者模式、當一個對象被修改時,則會自動通知它的依賴對象

4、迭代器模式、提供一種方法順序訪問一個聚合對象中各個元素, 而又無須暴露該對象的內部表示

5、責任鏈模式、使得很多對象都有機會處理請求,從而避免請求發送者和接收者之間的耦合關係。將這些對象形成 一條鏈,沿着這條鏈處理請求,之道有一個對象處理爲止

6、命令模式、把請求一個操作的對象與知道怎麼執行一個操作的對象分隔開,從而使新的命令類可以很容易被加入到系統當中

7、備忘錄模式、保存一個對象的某個狀態,以便在適當的時候恢復對象。備忘錄模式屬於行爲型模式

8、狀態模式、狀態模式允許一個對象在其內部狀態改變的時候改變行爲

9、訪問者模式、將數據結構和算法之間的解耦解開

10、中介者模式、提供了一箇中介類,該類通常處理不同類之間的通信,並支持鬆耦合,使代碼易於維護。中介者模式屬於行爲型模式。

11、解釋器模式。如果一種特定類型的問題發生的頻率足夠高,那麼可能就值得將該問題的各個實例表述爲一個簡單語言中的句子。這樣就可以構建一個解釋器,該解釋器通過解釋這些句子來解決該問題

 

發佈了195 篇原創文章 · 獲贊 41 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章