裝飾模式
動態的給乙個物件新增一些額外的職責,就增加功能老說,裝飾模式比生成子類更為靈活
component類
class component ;
concretecomponent類
class person : public component
void show();
};void person::show() ;
void decorator::decotate(component *p_component)
void decorator::show()
}
concretedecorator類
class tshirts : public decorator
};class xifu : public decorator
};class kuzi : public decorator
};class showes : public decorator
};
測試函式
int main(void)
輸出結果
裝扮的lining 穿t恤 穿褲子 穿西服 穿鞋子 press any key to continue
在沒有使用裝飾模式之前,當系統需要新的功能的時候,是向舊類中新增新的**,這些新加的**通常裝飾了原有類的核
心職責或主要行為,但在主類中新增新的字段,新的方法和邏輯,從而增加了主類的複雜度,而這些新加入的**僅僅是為
了滿足一些只在某種特殊情況下才會執行的特殊行為的需要,而裝飾模式卻提供了乙個非常好的解決方案,它把每個要裝飾
的功能放在單獨的類中,並讓這個類包裝它所要裝飾的物件,因此,當需要執行特殊行為時,客戶**就可以在執行時根據
需要有選擇的、按順序的使用裝飾功能包裝物件了。
把類的裝飾功能從類中搬出出去,可以簡化原有的類,有效的把類的核心職責和裝飾功能區分開了,而且可以去除相關類中
重複的裝飾邏輯。
大話設計模式 裝飾模式
動態地給乙個物件新增一些額外的職責。優點 把類中的裝飾功能從類中搬移出去,這樣可以簡化原有的類。有效地把類的核心功能和裝飾功能區分開了。解決的問題 已經開發完畢的物件,後期由於業務需要,對舊的物件需要擴充套件特別多的功能,這時候使用給物件動態地新增新的狀態或者行為 即裝飾模式 方法,而不是使用子類靜...
大話設計模式 裝飾模式
前言穿衣打扮是現在的時尚潮流,我們時常刷 來不斷滿足自己的打扮需求,買個帽子 換條褲子 整雙時尚鞋。需求是沒有極限的,無止境的購物,只要存在這個平台那麼這些裝飾性的購物是不可避免的。這在我們軟體開發中可以看做是為我們例項化的物件新增一些額外的功能,要是我們對於每個都定義個子類來繼承的話,那就是指數增...
大話設計模式 裝飾模式
裝飾模式 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。裝飾模式的uml類圖 component是定義乙個物件介面,可以給這些物件動態的新增職責。concretecomponent是定義了乙個具體的物件,也可以給這個物件新增一些職責。decorator,裝飾抽象類,...