装饰模式

一、描述

装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

先上一类图:

 

二、使用场景:

已有一个对象功能可用,但功能较弱,无法满足你的需求,你就可以使用此模式,对这个对象进行动态包装,来符合你的功能需求。

举个例子,有一个抽象类:纸杯,和一个无花纹纸杯。如果现有一个无花纹纸杯(也许是自己生产的,也许是其它系统生产的),但是你想要一个有花纹纸杯,你就可以用此模式动态对该无花纹纸杯进行进一步的包装装饰,得到一个有花纹纸杯。这样的好处是你仅仅只需对无花纹纸杯进行动态包装,而无需去实现无花纹纸杯的功能。

 这里有花纹纸杯就相当于一个装饰器了。

三、实现(伪代码):

无花纹纸杯 无花纹纸杯 = new 无花纹纸杯();

 

木纹花纹纸杯 木纹花纹纸杯 = new 木纹花纹纸杯();

木纹花纹纸杯.装饰(无花纹纸杯);

 

鱼尾纹花纹纸杯 鱼尾纹花纹纸杯 = new 鱼尾纹花纹纸杯();

鱼尾纹花纹纸杯.装饰(无花纹纸杯);

 

 

 

 

 

 

posted @ 2012-06-14 16:11  xnaboy  Views(158)  Comments(0Edit  收藏  举报