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

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

關於c++設計模式的總結
抽象工廠,決定產品系列的產品的組合,特點是創建同一款式的產品系列。缺點是增加產品組件,需要修改抽象工廠接口,影響抽象工廠子類。

關於c++設計模式的總結
builder,決定產品的各個部分的build的過程。替換相應的builder子類,就可以修改產品相應的各個part部件的實現;替換相應的Director子類,就可以修改builder組件的調用順序(即控制創建過程)。

關於c++設計模式的總結
工廠方法,產品子類和creator子類一 一對應。不直接調用FactoryMethod操作,定義了何時調用FactoryMethod。擴展相關子類可以修改此調用時間

關於c++設計模式的總結
Prototype,產品自身就是自己的creator

關於c++設計模式的總結
Singleton,產生全局的單一實例

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

關於c++設計模式的總結
adapter,描述了client如何做到通過target接口,來使用Adaptee的操作函數。

關於c++設計模式的總結
bridge,“抽象接口定義”和“具體實現部分”分離。分離後,可以各自發展。

關於c++設計模式的總結
composite,從共同接口派生,使對單個對象和組合對象的使用具有一致性,並且支持遞歸組合。

關於c++設計模式的總結
關於c++設計模式的總結
Decorator,共同的父類,接口相同,可以透明的、遞歸的增加額外的職責。與composite區別是隻有一個組件。與strategy區別是Decorator修飾component的外觀,strategy提取分離component的內部策略實現。

關於c++設計模式的總結
façade,分層的概念中,層與層之間提供統一、集中的接口。
使不同層的對象不會出現網狀交織。這樣各層可以獨立發展。façade對象承擔上層請求轉發給下層對應對象。

關於c++設計模式的總結
關於c++設計模式的總結
flyweight,分離對象的內部、外部狀態,使得大量細粒度對象可以共享,節省存儲空間

關於c++設計模式的總結
關於c++設計模式的總結
proxy,proxy是Realsubject接口的子集或者相同接口,從而代替Realsubject。proxy來控制Realsubject,而不是client直接控制和訪問Realsubject。這樣proxy可以對Realsubject進行各種額外的控制。

2)以上是結構性模式。

關於c++設計模式的總結
chain of responsibility,每個在鏈上的對象都有一致的處理請求和訪問鏈上後繼者的接口。鏈式傳遞請求,使得請求的發送者和接收者解耦。
直到某個處理

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

關於c++設計模式的總結
interpreter,解釋器和文法表示分開。定義一種文法,定義一個解釋器用抽象語法樹輔助解釋文法。同樣的接口派生而來,以便遞歸組合,實現抽象的語法樹。

關於c++設計模式的總結
iterator,將對聚合對象的“訪問和遍歷”從聚合對象中分離出來,並放入到一個iterator對象中。對client隱藏了composite的內部組織。

關於c++設計模式的總結
關於c++設計模式的總結
Mediator,控制和協調一組對象間的交互,對象只跟中介相連,對象間不直接相連,從而減少連接數。方便對象獨立發展。

關於c++設計模式的總結
Memento,向originator請求一個保存了內部狀態的Memento,後面需要恢復時,傳回此Memento給Originator,從而Originator恢復回之前狀態,並且不保留Originator的內部細節

關於c++設計模式的總結
observer,subject狀態改變時,通知各個observer。兩者獨立發展,通過抽象接口調用,減少兩者耦合。

關於c++設計模式的總結
state,把各個行爲封裝在接口一致的各個狀態對象中,所以改變狀態時,行爲得到改變。並且把請求委託給他的狀態對象來處理。state模式將與“特定狀態”相關的行爲局部化,並且將不同狀態的行爲分割開來。

關於c++設計模式的總結
strategy,物理結構和算法分離,算法封裝在一個獨立對象中。

關於c++設計模式的總結
template method,定義算法骨架,但一些具體實現由子類定義。把公共的操作過程,做成模板

關於c++設計模式的總結
visitor,對象中包含多個不同接口類型的子對象。訪問操作封裝爲獨立對象。結構對象和操作對象分離

3)以上是行爲型模式。

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

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

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

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