1. 程式人生 > >關於c++設計模式的總結

關於c++設計模式的總結

菜單 ons 分開 給他 處理請求 real 培訓 做到 直接

關於c++設計模式的總結

技術分享圖片
抽象工廠,決定產品系列的產品的組合,特點是創建同一款式的產品系列。缺點是增加產品組件,需要修改抽象工廠接口,影響抽象工廠子類。

技術分享圖片
builder,決定產品的各個部分的build的過程。替換相應的builder子類,就可以修改產品相應的各個part部件的實現;替換相應的Director子類,就可以修改builder組件的調用順序(即控制創建過程)。

技術分享圖片
工廠方法,產品子類和creator子類一 一對應。不直接調用FactoryMethod操作,定義了何時調用FactoryMethod。擴展相關子類可以修改此調用時間

技術分享圖片
Prototype,產品自身就是自己的creator

技術分享圖片
Singleton,產生全局的單一實例

1)以上是創建型:創建型設計模式核心是通過替換直接調用new創建具體對象這種方式,從而去client代碼和產品對象之間的耦合。client都是通過接口引用工廠,通過接口引用產品,所以替換更方便。

技術分享圖片
adapter,描述了client如何做到通過target接口,來使用Adaptee的操作函數。

技術分享圖片
bridge,“抽象接口定義”和“具體實現部分”分離。分離後,可以各自發展。

技術分享圖片
composite,從共同接口派生,使對單個對象和組合對象的使用具有一致性,並且支持遞歸組合。

技術分享圖片
技術分享圖片
Decorator,共同的父類,接口相同,可以透明的、遞歸的增加額外的職責。與composite區別是只有一個組件。與strategy區別是Decorator修飾component的外觀,strategy提取分離component的內部策略實現。

技術分享圖片
fa?ade,分層的概念中,層與層之間提供統一、集中的接口。
使不同層的對象不會出現網狀交織。這樣各層可以獨立發展。fa?ade對象承擔上層請求轉發給下層對應對象。

技術分享圖片
技術分享圖片
flyweight,分離對象的內部、外部狀態,使得大量細粒度對象可以共享,節省存儲空間

技術分享圖片
技術分享圖片
proxy,proxy是Realsubject接口的子集或者相同接口,從而代替Realsubject。proxy來控制Realsubject,而不是client直接控制和訪問Realsubject。這樣proxy可以對Realsubject進行各種額外的控制。

2)以上是結構性模式。

技術分享圖片
chain of responsibility,每個在鏈上的對象都有一致的處理請求和訪問鏈上後繼者的接口。鏈式傳遞請求,使得請求的發送者和接收者解耦。

直到某個處理

技術分享圖片
command,把請求封裝為一個command對象,雖然抽象的接口一致,但是可以派生各種command子類。command對象中包含了對接收者的引用、和調用接收者的一系列操作,通過動態創建command子類對象以及創建時傳入不同的接收者引用,可以達到動態配置(參數化)請求的目的。進而實現上下文相關的菜單。Command模式將調用操作的對象與知道如何實現該操作的對象解耦。增加新的Command變得很容易。

技術分享圖片
interpreter,解釋器和文法表示分開。定義一種文法,定義一個解釋器用抽象語法樹輔助解釋文法。同樣的接口派生而來,以便遞歸組合,實現抽象的語法樹。

技術分享圖片
iterator,將對聚合對象的“訪問和遍歷”從聚合對象中分離出來,並放入到一個iterator對象中。對client隱藏了composite的內部組織。

技術分享圖片
技術分享圖片
Mediator,控制和協調一組對象間的交互,對象只跟中介相連,對象間不直接相連,從而減少連接數。方便對象獨立發展。

技術分享圖片
Memento,向originator請求一個保存了內部狀態的Memento,後面需要恢復時,傳回此Memento給Originator,從而Originator恢復回之前狀態,並且不保留Originator的內部細節

技術分享圖片
observer,subject狀態改變時,通知各個observer。兩者獨立發展,通過抽象接口調用,減少兩者耦合。

技術分享圖片
state,把各個行為封裝在接口一致的各個狀態對象中,所以改變狀態時,行為得到改變。並且把請求委托給他的狀態對象來處理。state模式將與“特定狀態”相關的行為局部化,並且將不同狀態的行為分割開來。

技術分享圖片
strategy,物理結構和算法分離,算法封裝在一個獨立對象中。

技術分享圖片
template method,定義算法骨架,但一些具體實現由子類定義。把公共的操作過程,做成模板

技術分享圖片
visitor,對象中包含多個不同接口類型的子對象。訪問操作封裝為獨立對象。結構對象和操作對象分離

3)以上是行為型模式。

對設計模式有興趣的話,更詳細的總結,可看我的ppt。

或者請參考《設計模式:可復用面向對象軟件的基礎》一書
英文版《Design Patterns: Elements of Reusable Object-Oriented Software》

另外我的相關培訓視頻請看:
歡迎觀看我發布的各個課程: https://edu.51cto.com/lecturer/8896847.html

關於c++設計模式的總結