[设计模式] 装饰者模式

[设计模式] 装饰者模式


Introduction

(原文出处 大话设计模式 )

装饰者模式 : 动态的给对象加入一些额外的职责。

书上举了个类似洋娃娃的例子,洋娃娃要穿什么衣服端看它的主人心情而定。

因为我们可以自由的任意搭配(今天嘻哈风、明天居家风),所以我们不应该将装饰的功能写死在类里。

一样依据开放-封闭原则,将装饰的写成一个类,用来扩充对象的功能。

是的,我表达能力不好。可参考

  • http://www.dotblogs.com.tw/pin0513/archive/2010/01/04/12779.aspx
  • http://www.builder.com.cn/2007/1103/602734.shtml

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

装饰者模式是为既有的功能动态的增加更多功能,有效的把核心类职责和装饰功能区分开来,而且可以去除相关类中重复的装饰逻辑。

三小侠  小弟献丑,欢迎指教