顧名思義,裝飾模式就是給乙個物件增加一些新的功能,而且是動態的,要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項,關係圖如下:
source類是被裝飾類,decorator類是乙個裝飾類,可以為source類動態的新增一些功能,**如下:
public
inte***ce
sourceable
public
class
source
implements
sourceable
} public
class
decorator
implements
sourceable
@override
public
void
method()
} 測試類:
public
class
decoratortest
} 輸出:
before decorator!
the original method!
after decorator!
裝飾器模式的應用場景:
1、需要擴充套件乙個類的功能。
2、動態的為乙個物件增加功能,而且還能動態撤銷。(繼承不能做到這一點,繼承的功能是靜態的,不能動態增刪。)
缺點:產生過多相似的物件,不易排錯!
來自為知筆記(wiz)
設計模式(7) Decorator 裝飾模式
裝飾模式也是一種日常編碼中經常會不自覺採用的設計模式。其核心理念是 乙個類有自己的核心功能和職責,且這個類的 相對已經固定,不希望改動維護。現在要為這個類加入一謝額外的功能,這些功能不是一定必須的,而且可能是動態新增的,根據實際要求加入某一種或幾種。但是不管加入什麼額外功能,客戶眼中始終還是在操作這...
裝飾模式 Decorator
裝飾模式 decorator 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。其中component定義了乙個物件介面,可以給這些物件動態的新增職責 concretecomponent是定義了乙個具體的物件,也可以給這個物件新增一些職責 decorator裝飾抽象類,...
Decorator 裝飾模式
定義 動態的給乙個物件新增一些輔助功能,而不改變原有的類。案例 假如現在有個文字控制項textview,它可以在螢幕上顯示文字,但當文字過多的時候,乙個螢幕顯示不下,這時就需要給它新增乙個滾動條。給乙個視窗加乙個滾動條不是原有的功能,而是額外的功能,比如還可以加乙個黑色外框,而且這些操作不是為某乙個...