裝飾者模式——靈活變幻你的對象

裝飾者模式:動態的給一個對象添加一些額外的職責。我們知道,使用繼承機制創建子類是增加新功能的一個方式,但這爲整個子類都添加了該功能,

有時候我們需要隨時動態的爲對象添加新的功能,可以任意靈活的組合新的功能裝飾對象。此時,裝飾者模式提供了一個很好的解決方案,它可以使你透明地

嵌套多個裝飾者,爲對象添加任意多的功能。

模式參與者:

component:定義一個對象接口,可以給這些對象動態的添加職責。

ConcreteComponent:component的子類,可以給這些對象添加職責。

decorator:component的子類,與component有完全一致的接口,並且維護component對象的指針,通過該指針轉發請求給component。

ConcreteDecorator:裝飾子類,爲組件添加某一職責。

模式結構圖如下:



ConcreteDecorator,ConcreteComponent的公共父類都是component,公共接口完全一致,只是裝飾子類會重定義相關操作,在客戶使用component接口

編程時,不需要關心組件是否被裝飾,被什麼裝飾,使得客戶對組件的使用透明。

當我們使用一個listview顯示信息時,剛開始我們並不需要一個漂亮的滾動條,當信息存儲數滿屏時,此時我們需要一個滾動條了,這時,我們就可以使用

經過scrollDecorator裝飾的listview對象,客戶完全不知道listview對象的變化,只是在draw()的時候就有了滾動條,因爲裝飾子對象重寫了draw()方法。

其實,在很多編輯工具中,當我們選中某些單選框來添加新特性時,就可以認爲爲基本對象做了一次裝飾。PS中的各種效果作用於圖片對象,使得圖片具有

各種各樣的效果,也可由裝飾者實現,使用裝飾者,可以使一張圖片組合任意的圖片效果(裝飾),也可輕鬆去掉某一效果,添加新的效果。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章