[設計模式] 裝飾者模式

  • 3385
  • 0

[設計模式] 裝飾者模式

Introduction

(原文出處 大話設計模式 )

裝飾者模式 : 動態的給物件加入一些額外的職責。

書上舉了個類似洋娃娃的例子,洋娃娃要穿甚麼衣服端看它的主人心情而定。

因為我們可以自由的任意搭配(今天嘻哈風、明天居家風),所以我們不應該將裝飾的功能寫死在類別裡。

一樣依據開放-封閉原則,將裝飾的寫成一個類別,用來擴充物件的功能。

是的,我表達能力不好。可參考

 

Example

Person 類別

2010-03-04_021243

 

Finery 類別

2010-03-04_021448

 

一些具體服飾類別...

在各個具體服裝類別中,show 函式是屬於核心類別的功能,我們亦可在這些類別中加入屬於自己獨有的功能,

並且在執行完 base.show() 後,接著執行自己的函式。

2010-03-04_021633

 

Client 端

2010-03-04_021903

 

執行結果

2010-03-04_023016

 

 

 

 

 

 

Conclusion

裝飾者模式是為既有的功能動態的增加更多功能,有效的把核心類別職責和裝飾功能區分開來,而且可以去除相關類別中重覆的裝飾邏輯。

三小俠  小弟獻醜,歡迎指教