原创 c++ 設計模式23講之適配器模式

適配器模式 定義: 將一個類的接口轉成客戶希望的另一個接口 優點: (1)將目標類和適配器類解耦合 (2)提高類透明性和複用性 (3)擴展靈活性和擴展性 缺點: (1)適配類成爲最耦合部分 使用範圍: 已存在目標類和適配者類,還需知曉二

原创 c++ 設計模式23講之建造者模式

建造者模式是將局部成員構建成一個整體,返回整體產品對象,抽象工廠是針對一系列產品的對象創建和返回 建造者模式 定義: 將一個複雜對象的構建與表示分離,通過導演類方法依次組裝好局部零件返回產品對象 優點: (1)客戶端不需知道產品內部細

原创 c++設計模式23講之策略模式

策略模式 定義: 定義一系列算法,將每一個算法封裝起來,能夠通過接口繼承來實現相互替換 使得算法可以獨立用戶而變化 優點: (1)滿足開放封閉原則,對擴展開放對修改封閉,便於算法簇完善 (2)將調用類和算法策略類解耦合,避免硬編碼 (3)

原创 c++ 設計模式23講之組合模式

組合模式 定義: 組合多個對象形成樹形結構,實現部分-整體的層次關係 優點: (1)很清楚的定義樹形層次,結點和葉結點進行分割,便於擴展 (2)很靈活的遞歸組合 缺點: (1)擴展的對象需要滿足抽象接口的約束,相互間具有依賴關係 (2)組

原创 c++ 設計模式23講之工廠模式

工廠模式與簡單工廠的區別在與,簡單工廠是工廠類創建實例對象;工廠模式是對不同產品類增加各自的創建工廠類 工廠模式 定義: 定義一個創建產品對象的接口工廠,用接口工廠的派生類實現對產品派生類的創建 優點: (1)產品實例的細節進行封裝,

原创 c++ 設計模式23講之觀察者模式

/*編程小技巧 1.聲明和定義最好分別寫在.h和.cpp文件,避免循環依賴 2.前向聲明只能使用指針和引用的聲明,不能初始化對象和調用方法 3.共同的方法最好集成在基類,避免代碼冗餘 4.代碼是人看的,不要用很炫的技巧把自己坑了 5.v

原创 c++ 設計模式23講(番外篇)之簡單工廠模式

簡單工廠模式 定義: 定義一個工廠類根據不同參數創建其他類的實例 優點: (1)將實例創建與使用分離 (2)可通過配置增加新的產品類,靈活擴展 (3)客戶端可不關心產品類類名,只需知道參數定義和生成實例的對應關係 缺點: (1)工廠類集合

原创 c++ 設計模式23講之外觀模式

外觀模式 定義: 提供統一入口來操作子系統,避免客戶端與各個子系統的耦合性 優點: (1)對客戶端屏蔽各子系統,減少之間的耦合 (2)子系統的修改也不會影響到外觀對象 缺點: (1)外觀模式未能很好限制客戶端直接使用子系統 使用範圍: 當

原创 c++ 設計模式23講之橋聯模式

橋聯模式考慮多繼承關係的類按照維度進行降解,實現N*M轉成N+M 橋聯模式 定義: 將每個維度進行抽象化,將抽象部分和實現部分解耦合可以獨自變化 優點: (1)解除類維度綁合關係,將維度由笛卡爾積關係轉成平鋪關係 (2)取代多繼承,可

原创 c++ 設計模式23講之代理模式

代理模式 定義: 給莫個對象提供抽象佔位符,由代理對象控制對源對象的訪問 優點: (1)協調調用者和被調用者降低系統耦合 (2)可以在代理類增加額外的職責 (3)起到遠程代理、緩存代理、虛擬代理、保護代理等功能 缺點: (1)增加中間代理

原创 c++ 設計模式23講之抽象工廠模式

抽象工廠模式與工廠模式的區別在於,抽象工廠是工廠類的升級版本。工廠模式適用於一維(產品等級),抽象工廠適用於二維(產品等級與產品簇) 抽象工廠模式 定義: 提供創建一系列相關或相互依賴的接口,通過具體的工廠類來創建二級產品的對象實例

原创 c++ 設計模式23講之職責鏈模式

職責鏈模式 定義: 避免請求發送者與處理者耦合,將多個處理對象連成一條鏈,傳遞請求直到有一對象處理它 優點: (1)鏈中對象不需知道鏈結構,由客戶端創建鏈 (2)請求對象只需維護後繼引用,不需維持它對所有候選者引用 (3)增加請求對象無需

原创 c++ 設計模式23講之備忘錄模式

可以用友元來實現對私有成員的訪問 備忘錄模式 定義: 不破壞封裝前提下捕獲一個對象的內部狀態,並在對象之外保存,從而使對象能在以後恢復到該狀態 優點: (1)實現一種恢復機制,對象可回溯到先前狀態 (2)可採用集合方式實現多次回溯操作

原创 c++ 設計模式23講之裝飾模式

裝飾模式 定義: 不改變對象前提下動態增加其職責,實現一種比子類更靈活的擴展方式 優點: (1)比繼承更靈活,不會導致類個數極度增加 (2)可以對一個對象多種裝飾 (3)具體構建類和裝飾類可單獨變化 缺點: (1)會產生很多小對象,佔用資

原创 c++ 設計模式23講之中介者模式

中介者模式 定義: 定義一箇中介者對象來封裝一系列對象交互 優點: (1)簡化對象間的交互,將多對多的網狀關係變成1對多的星狀關係 (2)將對象間解耦合 缺點: (1)大量的交互操作集中在中介者類,增加維護難度 使用範圍: 系統間對象存在