典型的装饰器模式类结构图:
其中各个角色描述如下:
Java I/O中装饰器模式的使用, 以FilterInputStream为例介绍装饰器模式的使用
InputStream就是以抽象组件存在的, 而FileInputStream就是具体的组件类, 它实现了抽象组件的所有接口; FileInputStream无疑就是装饰角色, 它实现了InputStream的所有接口,
并持有InputStream的实例对象的引用; BufferedInputStream是具体的装饰器类实现者.它给InputStream类附件了功能, 这个装饰器类的作用就是使得InputStream读取的数据保存在内存中,而提高读取的性能, 与这个装饰器类有类似的功能还有LineNumberInputStream类,它的作用是提高按行读取数据的功能, 他们都是InputStream类增强了功能,或者提升了性能.
适配器模式与装饰器模式的区别:
装饰器模式与装饰器模式都有一个别名(Wrapper),它们看似都是起到包装一个类或对象的作用,但是使用他们的目的很不一样. 适配器模式的意义是将一个接口转变成另外一个接口, 他的目的是通过改变接口来达到重复使用的目的;而装饰器模式不是要改变装饰器对象的接口,而是恰恰要保持原有的接口,但是争强原有对象的功能,或者改变原有对象的处理方法而提升性能.所以这两个设计模式IDE目的是不同的.
原文:http://www.cnblogs.com/Jazzyoung/p/5825300.html