装饰器模式(Decorator)


一、定义

装饰器模式,能够动态的给一个对象添加一些额外的职责;就增加功能来说,装饰器模式比生成子类更为灵活。

能够以对客户端透明的方式来扩展对象的功能,是继承关系的一种替代方案。

其结构可用下图表示,(注:此图来自《大话设计模式——程杰》)




二、主要作用

如果不用装饰器模式,当系统需要新功能的时候,可以向旧的类中添加新代码,这些新代码装饰了原有类的核心职责和主要行为。但是在主类中增加新的字段,新的方法,会增加主类的复杂性。而且通常这些新加的特性和方法只在某些特殊的情况下才会用到。

装饰器模式提供了一种很好的解决方案,它把每个要装饰的功能放在单独的类中,并让这个类包装它所需要的装饰的对象,因此,当需要执行特殊行为时,就可以在运行时有选择的利用装饰功能来包装对象了。


三、应用

1、在Java I/O库中的应用

下图取自《Java与模式》之装饰模式一文。


 

posted @ 2016-01-02 15:50  luceion  阅读(224)  评论(0编辑  收藏  举报