7 裝飾模式(Decorator)

2021-07-03 06:14:54 字數 800 閱讀 3089

顧名思義,裝飾模式就是給乙個物件增加一些新的功能,而且是動態的,要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項,關係圖如下:

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,它可以在螢幕上顯示文字,但當文字過多的時候,乙個螢幕顯示不下,這時就需要給它新增乙個滾動條。給乙個視窗加乙個滾動條不是原有的功能,而是額外的功能,比如還可以加乙個黑色外框,而且這些操作不是為某乙個...