我希望在输出流上使用两个不同的过滤器。假设以下是过滤器。
public class FilterStream1 extends FilterOutputStream {
}
public class FilterStream2 extends FilterOutputStream {
}
我有一个OutputStream out,当前使用FilterStream1包装,如下所示
return new FilterStream1(out);
我可以通过添加第二个过滤器输出流来修改它以执行以下操作吗?
OutputStream intermediateStream = new FilterStream2(out);
return new FilterStream1(intermediateStream);
在这种情况下,我有什么需要记住的吗?
答案 0 :(得分:1)
是的,将过滤器流放在其他过滤器流中是完全合法的。没有问题即将出现。
实际上,这正是在流api中实现的装饰器模式的用例。 (参见https://en.wikipedia.org/wiki/Decorator_pattern以供参考。)