大話設計模式 裝飾模式

2021-06-14 00:23:42 字數 1647 閱讀 5580

動態地給乙個物件新增一些額外的職責。

優點:把類中的裝飾功能從類中搬移出去,這樣可以簡化原有的類。有效地把類的核心功能和裝飾功能區分開了。

解決的問題:

已經開發完畢的物件,後期由於業務需要,對舊的物件需要擴充套件特別多的功能,這時候使用給物件動態地新增新的狀態或者行為(即裝飾模式)方法,而不是使用子類靜態繼承。

裝飾模式是為已有功能動態地新增更多功能的一種模式。當系統需要新功能時,一般做法是向舊的類中新增新的**,這些新 加的

**通常影響了原有類的核心職責或行為,在主類中加入新的字段、方法或是邏輯,從而增加了主類的複雜性,而這些新加入 的代

碼僅僅是為了滿足一些只在某種特定情況下才會發生的特殊行為的需要。裝飾模式提供了乙個非常好的解決方案,它把每個要 裝飾

的功能放在單獨的類中,並讓這個類包裝它所有要裝飾的物件,這樣當需要執行特殊行為時,客戶**就可以在執行時根據需 要有

選擇性地,按順序的使用裝飾功能包裝的物件了。

**如下:

component.h
#ifndef component_h

#define component_h

class component

;#endif

concretecomponent.h
#include"component.h"

#ifndef concretecomponent_h

#define concretecomponent_h

class concretecomponent : public component

;#endif

concretecomponent.cpp
#include#include"concretecomponent.h"

using namespace std;

void concretecomponent::operation()

void decorator::setcomponent(component* _component)

concretedecoratora.h
#include"decorator.h"

#ifndef concretedecoratora_h

#define concretedecoratora_h

class concretedecoratora : public decorator

;#endif

concretedecoratora.cpp
#include#include"concretedecoratora.h"

using namespace std;

void concretedecoratora::operation()

大話設計模式 裝飾模式

前言穿衣打扮是現在的時尚潮流,我們時常刷 來不斷滿足自己的打扮需求,買個帽子 換條褲子 整雙時尚鞋。需求是沒有極限的,無止境的購物,只要存在這個平台那麼這些裝飾性的購物是不可避免的。這在我們軟體開發中可以看做是為我們例項化的物件新增一些額外的功能,要是我們對於每個都定義個子類來繼承的話,那就是指數增...

大話設計模式 裝飾模式

裝飾模式 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。裝飾模式的uml類圖 component是定義乙個物件介面,可以給這些物件動態的新增職責。concretecomponent是定義了乙個具體的物件,也可以給這個物件新增一些職責。decorator,裝飾抽象類,...

《大話設計模式》 裝飾模式

裝飾模式優點 將類中原有的裝飾功能移出,作為單獨的乙個或幾個物件。簡化了原有的類,同時又可以動態的為類增加某一項或某幾項裝飾,而不必修改原類。有效的把類的核心職責和裝飾功能區分開來,並且去除相關類中重複的裝飾邏輯。同時讓類在某些特定的時候,才擁有某些特定的功能。常用場景 加密資料 過濾詞彙。裝飾模式...