一、定义
装饰器模式,能够动态的给一个对象添加一些额外的职责;就增加功能来说,装饰器模式比生成子类更为灵活。
能够以对客户端透明的方式来扩展对象的功能,是继承关系的一种替代方案。
其结构可用下图表示,(注:此图来自《大话设计模式——程杰》)
二、主要作用
如果不用装饰器模式,当系统需要新功能的时候,可以向旧的类中添加新代码,这些新代码装饰了原有类的核心职责和主要行为。但是在主类中增加新的字段,新的方法,会增加主类的复杂性。而且通常这些新加的特性和方法只在某些特殊的情况下才会用到。
装饰器模式提供了一种很好的解决方案,它把每个要装饰的功能放在单独的类中,并让这个类包装它所需要的装饰的对象,因此,当需要执行特殊行为时,就可以在运行时有选择的利用装饰功能来包装对象了。
三、应用
1、在Java I/O库中的应用
下图取自《Java与模式》之装饰模式一文。