裝飾模式

裝飾模式以對客戶端透明的方式擴展對象的功能,是繼承關係的一個替代方案。

 

 裝飾模式

 

  • Compoment:給出一個接口,以規範準備接收附加責任的對象
  • ConcreteCompoment:將要接收附加責任的類
  • Decorator:持有一個Compoment實例,並定義一個與Compoment一致的接口
  • ConCreteDecorator:負責貼上額外的功能

什麼情況下使用:

  • 擴展一個類的功能,或者給一個類附加功能
  • 動態的附加功能,還可以撤銷
  • 需要增加由一些基本功能的排列組合的而產生的非常大量的功能,從而是繼承關係變的不現實。

 

優點:

  1. 裝飾模式比繼承更靈活,裝飾模式支持系統動態的給對象貼上一個功能,或者除掉一個功能;繼承則不同,它是靜態的,他在系統運行前就決定了。
  2. 通過使用不同的具體裝飾類,以及這些裝飾類的排列組合,可以創造出很多不同的行爲組合。

 

缺點:

  1. 優點2提供的更加靈活機動的特性,也意味着比繼承更加容易出錯。
  2. 使用裝飾模式會產生更多對象相對於繼承,更多的對象對於排錯更加困難,特別是這些對象看上去都很相像。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章