C++常用的設計模式


單例模式:

單例模式:確保一個類只有一個實例,並且這個實例化向整個系統提供

(例如只有一台打印機,可以有多個打印任務隊列,但是只能有一個正在打印)。
單例模式又分為(餓漢模式,懶漢模式)兩種

餓漢模式:程序運行即創建對象並實例化,靜態實現所以線程是安全的
懶漢模式:創建對象不實例化,需要的時候才實例化,線程不安全需要(加鎖)
工廠模式:
建立對象的類就如一個加工廠,建立對象就如一個產品,使用產品而不用在乎產品如何生產。

工廠模式分為三種(簡單工廠模式,工廠方法模式,抽象工廠模式)

1 簡單工廠模式(一個工廠生產兩種產品)
:即根據工廠里的對象決定實例化什么產品

2 工廠方法模式(兩個工廠,一個工廠只生產一種產品)
:定義一個創建對象的接口

3 抽象工廠模式(兩個工廠,每個工廠可以產兩種產品)
:提供一個創建相互依賴對象的接口,而無需指定它們具體的類。
策略模式

策略模式:即每一個類都是一個錦囊,但是錦囊之間可以替代(即功能一樣,實現的方法不一樣)

觀察者模式

定義一對多的依賴關系,讓多個觀察者對象同時監聽一個主對象。當這個主對象的動態發生變化時,會通知所有觀察者對象,讓其更新自己。(例如訂閱郵件)

建造者模式

產品內部表象可以變化,客戶不必只要內部組成,可以強制執行一種分步驟進行的建造過程。用一個接口完成不同的操作。(例如登錄QQ,自動選擇所在地區的服務器)

訪問者模式

對於數據結構相對未確定的系統,把數據結構和基於數據結構的操作解耦合,讓操作集合可以自由演化。(做任何更改不需要修改基類)
優點:增加新的操作很容易,通過增加一個新的訪問者類。

橋接模式

將抽象化與實現化脫離,使得二者可以獨立的變化。

適配器模式

把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口原因不匹配而無法一起工作的兩個類能夠一起工作。

合成模式

將對象組織到樹結構中,用來描述整體與部分的關系。
處理對象的樹結構的模式。

解釋器模式

給定一個語言后,解釋器模式可以定義出其文法的一種表示,並同時提供一個解釋器。客戶端可以使用這個解釋器來解釋這個語言中的句子

 

 

參考:https://www.cnblogs.com/chengjundu/p/8473564.html

https://www.cnblogs.com/coderzjz/p/12688333.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM