装饰器模式允许向一个现有的对象添加新的功能,同时不改变其结果。比如Java 中的IO框架中,
FileInputStream(处理文件)、
ByteArrayInputStream(处理字节数组)、
BufferedInputStream(带缓存的处理类)等就是对
InputStream进行的功能扩展,这就是装饰器模式的典型应用。比如下面就是以缓存方式读取输入流: