[ 过滤(Filter)流与装饰器 (Decorator) 设计模式 ]
java.io.FilterInputStream 和
java.io.FilterOutputStream 用来为一个输入(或输出)流添加额外的功能。FilterInputStream/FilterOutputStream
本身继承于 InputStream/OutputStream,是一个(is a)
输入/输出流 ,同时它通过拥有 (has a)
另一个输入/输出流,并为这个流添加额外的功能。这种结构是 Decorator 设计模式的典型应用。
抽象的 Decorator 设计模式结构图
其中各元素对照如下:
Component -> InputStream/OutputStream
ConcreteComponent -> 如:FileInputStream/FileOutputStream
Decorator -> FilterInputStream/FilterOutputStream
ConcreteDecoratorA -> BufferedInputStream/BufferedOutputStream
ConcreteDecoratorB -> DataInputStream/DataOutputStream
ConcreteDecoratorC -> PrintStream
需要注意的是:过滤流(装饰类)并没有改变实际的读写行为