裝飾器模式小結

2022-02-22 04:56:52 字數 836 閱讀 6996

裝飾器模式主要特徵是用特殊的方式給物件新增功能職責,實際上,這個裝飾器跟我們想象的裝飾一棵聖誕樹差不多,但又有不同之處。

我的理解是,雖然增加了裝飾物,但是這些裝飾物不是直接add上去的,之前一直被這個概念搞混。因為這種模式是建立在乙個超類的基礎上的,例如下圖的:component,所有其他的類都是這個超類的子類,包括具體的元件和裝飾類。因此我們裝飾的物件,與被裝飾的物件,是繼承共同的超類的。這也是被裝飾的物件可以在保持核心結構不變的情況下改變屬性的原因。

也就是說,無論裝飾器類增加了什麼功能,只要重寫了超類的方法,就可以順利回溯被裝飾類的方法。

也就是說,裝飾器相當於把乙個物品放在禮品盒裡面,禮品盒就是裝飾類,而整個禮物,還可以實現原來沒有包裝時候的物品的功能。

用actionscript3.0的**實現:

【元件類】即超類

package  

}}

【具體元件類】

package  

}}

【抽象裝飾類】

package  

}}

【具體裝飾類】

package  

override public function getinfo():string

}}

package  

override public function getinfo():string

}}

【客戶端】

package  

}}

裝飾器模式小結

裝飾器模式主要特徵是用特殊的方式給物件新增功能職責,實際上,這個裝飾器跟我們想象的裝飾一棵聖誕樹差不多,但又有不同之處。我的理解是,雖然增加了裝飾物,但是這些裝飾物不是直接add上去的,之前一直被這個概念搞混。因為這種模式是建立在乙個超類的基礎上的,例如下圖的 component,所有其他的類都是這...

裝飾器小結加單例裝飾器

裝飾器是不改變原有功能的情況下新增新的功能,感覺就是 吧!粗熟理解,不喜勿噴,而且還不改變原有 的情況下哦 def log func print call s func.name return func args,kwargs log def now print 2015 3 25 本質就是一行 我...

裝飾器模式

大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...