c 設計模式 裝飾模式

2022-08-05 08:57:19 字數 477 閱讀 2749

本文參考

裝飾模式可以說是非常巧妙的乙個模式了。

當想要動態得給乙個物件增加功能,並且實現各種功能自由組合。如果純粹用繼承的方法的話,會產生數量多到**的子類。這時裝飾模式就派上用場了。

例如遊戲中的人物的外形,可以給人物穿上帽子,穿上衣服褲子等裝飾,或者都穿上。

裝飾模式包含角色:

第一種,人物類,抽象類。

第二種,裝飾器類,繼承自人物類。

優點在於可以自由組合各種功能。相比於直接繼承,更具有靈活性,且**量小很多。

缺點在於由於每一步產生的物件名字都一樣,不好debug。

//人物基類

class man

最後輸出為:

c 設計模式 裝飾模式

裝 飾模式又名包裝模式,以對客戶端透明的方式擴充套件物件的功能,是繼承關係的乙個替代方案。它使用原來被裝飾的類的乙個子類的例項,把客戶端的呼叫委派到被裝 飾類,客戶端並不會覺得物件在裝飾前和裝飾後有什麼不同。在以下情況下應使用裝飾模式 需要擴充套件乙個類的功能,或給乙個類增加附加責任。動態地給乙個物...

c 設計模式(裝飾模式)

動態地給乙個物件新增一些額外的職責 不重要的功能,只是偶然一次要執行 就增加功能來說,裝飾模式比生成子類更為靈活。建造過程不穩定,按正確的順序串聯起來進行控制。good 當你向舊的類中新增新 時,一般是為了新增核心職責或主要行為。而當需要加入的僅僅是一些特定情況下才會執行的特定的功能時 簡單點就是不...

C 設計模式 裝飾模式

目錄 基本概念 和例項 裝飾模式是為已有功能動態地新增更多功能的一種方式。當系統需要新功能的時候,是向舊系統的類中新增新 這些新 通常裝飾了原有類的核心職責或主要行為。裝飾模式的優點 1.把類中的裝飾功能從類中搬移出去,這樣可以簡化原有的類 2.有效地把類的核心職責和裝飾功能區分開了。而且可以去除相...