java - 为什么使用 java.io.Filter* 而不是扩展具体的流实现?

标签 java stream

java.io.Filter* 类型的用途是什么?即FilterInputStream , FilterReader

是否可以将任何过滤逻辑添加到像 FileInputStream 这样的具体流类中?通过简单地覆盖特定方法并调用 super() ?即super.read()

据我所知,过滤器类型提供的唯一功能充其量是感知性的——也就是说,它们(一目了然)记录了这样一个事实:开发人员真正需要的是一种应用一些附加逻辑的方法(过滤)到已经存在的流实现。

我错过了什么?

最佳答案

这是一个Decorator Pattern ,然后您可以使用它来过滤扩展输入流的任何内容。这意味着您在使用它时具有高度的灵 active 。

如果您扩展输入流,那么每当您想要过滤某些内容时,您都需要扩展该类型的输入流。因此,如果您想过滤每种类型的输入流,您将需要针对每种类型的输入流的过滤器扩展类。使用装饰器模式,您只需要一种接受输入流的实现,并且可以过滤它们。

关于java - 为什么使用 java.io.Filter* 而不是扩展具体的流实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183933/

相关文章:

java - java中的else出现语法错误

java - 带有特殊字符的 FTP URL 用户名和密码

Java - 将项目从 zip 文件移动到受密码保护的 zip 文件中

c# - 从混合了 XML 和纯文本的流中读取

c# - asp.net mvc生成数据下载文件

c# - 使用 Stream.Read() 与 BinaryReader.Read() 处理二进制流

java - 如何使用Java更改Android中TextView的位置?

java - 对 xslt 使用不同的编码

java - 将多种数据类型作为参数传递给方法的接口(interface)是什么样的?

c - 如何在 C 中检查输入缓冲区/流中的任何内容?