裝飾模式(Decorator)


裝飾模式的角色:

  • 抽象構件角色(Component)

給出一個抽象接口, 以規範準備接收附加職責的對象.

  • 具體構件角色(Concrete Component)

定義一個將要接收附加職責的類.

  • 裝飾角色(Decorator)

持有一個構件(Component)對象的引用, 並定義一個與抽象構件接口一致的接口.

  • 具體裝飾角色(Concrete Decorator)

負責給構件對象”貼上”附加的職責.


裝飾模式的特點:

  • 裝飾對象和真實對象有相同的接口.
  • 裝飾對象包含一個真實對象的引用(Reference).
  • 裝飾對象接收所有來自客戶端的請求.
  • 裝飾對象可以在轉發這些請求以前或以後增加一些附加功能

裝飾模式 VS 繼承

裝飾模式

繼承

用來擴展特定對象的功能

用來擴展一類對象的功能

不需要子類

需要子類

動態

靜態

運行時分配職責

編譯時分配職責

防止由於子類導致的複雜和混亂

導致很多子類產生

更多的靈活性

缺乏靈活性

對於一個給定的對象,同時可能有不同的裝飾對象,客戶端可以通過它的需求選擇合適的裝飾對象發送消息.

 


Jan 14th, 2016

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