C++設計模式之導讀

設計模式概述
目標:高內聚低耦合
核心思想: 隔離變化,封裝變化(抽象)
面向抽象類編程,客戶端和服務器的解耦合
用抽象解耦具體實現,將程序中可能變化的部分封裝到具體類中,使用抽象技術,解藕程序和具體類的實現。這樣,當未來的需求發生變化,我們就可以在不改動核心程序流程的情況下,擴展程序的實現。所謂的使用抽象技術也就是遵循面向接口編程原則
變化:客戶需求的變化,技術平臺的變化,開發團隊的變化,環境市場的變化
分類:創建型模式:創建對象, new之間的解耦
(五種:工廠模式,抽象工廠模式,建造者模式,原型模式,單例模式)
結構型模式:類與類之間的關係,對象與對象之間的關係,對象之間的解耦
(類和類之間的關係有:實現 依賴 關聯 聚合 組合 泛化)
(七種模式:代理模式、裝飾者模式、適配器模式、橋接模式、組合模式、外觀模式、享元模式)
行爲型模式:類怎麼寫,對象怎麼寫
(十一種模式:模板方法模式、命令模式、責任鏈模式、策略模式、中介者模式、觀察者模式、備忘錄模式、訪問者模式、狀態模式、解釋器模式)

工廠方法模式:定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類中;
抽象工廠模式:提供一個創建一系列相關或者相互依賴的接口,無需指定具體的類;
建造者模式:將一個複雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示;
原型模式:原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象;
單例模式:是保證一個類僅有一個實例,並提供一個訪問他的全局訪問點;

代理模式:就是爲其他對象提供一種代理以控制對中個對象的訪問
裝飾器模式:動態的給一個對象添加一些額外的功能
適配器模式:將一個類的接口轉換成用戶希望的另一個接口,使得原本不兼容的接口能一起工作
橋接模式:是將抽象部分與實際部分相分離,使他們可以獨立的變化
組合模式:是將對象組合成樹形結構以表示部分-整體的層次結構
外觀模式:是爲子系統中的一組接口提供一個一致的界面
享元模式:以共享的方式高效的支持大量的組粒度的對象

模板方法模式:使得子類可以不改變一個算法的結構即可重定義該算法的某些特定的步驟
命令模式:是將一個請求封裝成爲一個對象,從而使你可以用不同的請求對客戶端進行參數化
責任鏈模式:在該模式裏,很對對象由每一個對象對其下一個對象的引用,而連起來的一個鏈
策略模式:就是準備一組算法,並將每一個算法封裝起來,使得他們可以互換
中介者模式:就是定義一箇中介對象來封裝系列對象之間的交互
觀察者模式:定義對象之間的一種一對多的依賴關係,當一個對象的狀態發生變化時,通知其他類做出相應的變化
備忘錄模式:是在不破壞類封裝的前提下,捕獲一個對象的內部狀態,並且在該對象之外保存這個狀態
訪問者模式: 是表示一個作用於某對象結構中的各個元素的操作,它使你可以在不改變各元素的前提下定義作用於這些元素的操作
狀態模式:就是對象的行爲,依賴他所處的狀態
解釋器模式:定義一個簡單的語法,解釋這些句子

設計模式的原則:
開放封閉原則:類的改變是通過增加代碼實現的,而不是修改源碼(銀行業務員辦理)
依賴倒轉原則:依賴於抽象,而不是依賴於具體的實現,也就是針對接口編程
高層模塊(穩定)不應該依賴於底層模塊(變化),二者都應該依賴於抽象(穩定);
抽象(穩定)不應該依賴於實現細節(變化),實現細節應該依賴於抽象(穩定);
接口隔離原則:類之間的依賴關係應該建立在最小的接口上
里氏代換原則:任何基類出現的地方,子類一定也可以出現;
繼承的優缺點:
優點:代碼共享,提高複用性
提高代碼的拓展性
缺點:
繼承的侵入式的,擁有父類的屬性和方法
父類和子類的耦合度太高了
實現:將父類定義成抽象類,子類來實現
合成複用原則:能用組合就不要用繼承
迪米特法則:一個類儘量減少與其他的關係,最少知識原則

創建型模式:
工廠設計模式:作用:封裝對象的創建,解耦new創建對象的耦合度
分類:簡單工廠模式,工廠模式,抽象工廠模式
簡單工廠模式:一個工廠方式,依據傳入的參數,生成對應的對象
工廠模式:將工廠提取成一個抽象類,具體生成什麼產品由子類決定
抽象工廠:爲創建一組相關或者相互依賴的對象提供的一個藉口

單例模式:保證爲一個類只生成唯一的一個實例對象,也就是說,在整個程序空間中,該類只存在一個實例對象
單例的步驟:1、構造函數私有化
2、定義一個全局的靜態方法
3、在類中定義一個靜態指針
分類:懶漢式和餓漢式
懶漢式:線程不安全,延遲初始化
餓漢式:線程安全,但是容易產生垃圾
一般解決方法:上鎖或者用靜態局部變量
七種實現方法:1、餓漢式 2、懶漢式(線程不安全) 3、懶漢式(線程安全)
4、雙重檢查模式 5、靜態內部類單例模式 6、枚舉單例 7、容器單例

結構型模式:
適配器模式:將一個類的接口轉化成客戶希望的另外一個接口這樣使得原本由於接口不兼容而不能一起工作的那些類也可以一起工作
分類:類適配器
對象適配器
外觀模式:定義一個統一的接口,用來訪問子系統的一羣接口,外觀模式定義了一個高層接口,讓子系統更容易使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章