裝飾器模式的意圖是用來動態的增加/減少功能職責。顧名思義,該模式的功能十分明顯,就是為了滿足時不時冒出的新需求,而避免過多生成子類。舉個例,裝飾器模式為已有類動態附加額外功能就像一般遊戲一樣,可以為英雄的公升級提供額外的獎勵,具體物件是concretecomponent,通過裝飾器decorator,實現每乙個附加功能(獎勵)進具體物件concretedecorator。
優點
:通過動態組合的方式,靈活給物件新增所需要的功能。
缺點
:多人同時操作可能發生衝突,**後續維護和除錯因為**塊的改變而變得困難。
應用場景:
1、當子類擴充套件功能不可行時,
2、向同一型別物件中的某個物件動態新增/刪除功能而不影響到其他物件
需要被裝飾的物件抽象成component(目標物件),為了使得客戶端在使用目標物件的時候不去區分裝飾者型別和被裝飾者型別,所以統一抽象成component型別。然後在component中定義operation(目標物件的業務行為)。concretecomponent和decorater分別實現component。
decorater設計成抽象類,在
decorater上可以實現不同的裝飾行為,即concretedecorater,在這裡可以新增業務行為。
component則是以組合的方式新增到
decorater中。
裝飾器模式
大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...
裝飾器模式
裝飾器設計模式 對真實物件動態的新增功能 抽象元件 author zhangjianbin public inte ce icar 俱體構件物件 真實的物件 author zhangjianbin class car implements icar 裝飾器物件 author zhangjianbin...
裝飾器模式
一 概念 裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該 盡量使用物件組合,而不是物件繼承來擴...