设计模式(三)--装饰者模式(2)

装饰者模式(Decorator)示例

例子改编自《设计者模式解析(第二版)》214页,人民邮电出版社

意图:动态的给一个对象添加职责;即提供了“即插即用”方法,不用重新编译已有部分。

问题:要使用的对象将执行所需的基本功能。但是,可能需要为这个对像添加某些功能,这些附加的功能可能发生在对象的基本功能之前或之后。

解决方案:可以无需创建子类而扩展一个对象的功能

优点:类的层次结构大小和复杂度有了很大程度的降低

缺点:

1)如果装饰者本身是被装饰的,那么访问装饰模式中引进的特性将是非常困难的甚至是危险的。

2)系统对装饰者的使用顺序是敏感的。

附:显然,如果要更改被装饰者的基本功能的情况是不能用装饰者模式的。

参考文献:

[1]《设计者模式解析(第二版)》,人民邮电出版社,AlanShalloway等著,徐言生译

[2]《设计模式初学者指南》,机械工业出版社,AllenHolub著,徐迎晓译

对示例的描述:

1)具体组件SalesTicket(即被装饰者)实现基本功能(即打印票据正文),需要给它加个表头和表尾,于是用两个具体装饰类Header和Footer完成附加功能。

2)例子改编自参考文献[1],不明白可以看。

3)使用编译器vc6.0通过。

你可能感兴趣的:(装饰者模式)