java.io.Filter* 类型的用途是什么?即FilterInputStream
, FilterReader
是否可以将任何过滤逻辑添加到像 FileInputStream
这样的具体流类中?通过简单地覆盖特定方法并调用 super()
?即super.read()
据我所知,过滤器类型提供的唯一功能充其量是感知性的——也就是说,它们(一目了然)记录了这样一个事实:开发人员真正需要的是一种应用一些附加逻辑的方法(过滤)到已经存在的流实现。
我错过了什么?
最佳答案
这是一个Decorator Pattern ,然后您可以使用它来过滤扩展输入流的任何内容。这意味着您在使用它时具有高度的灵 active 。
如果您扩展输入流,那么每当您想要过滤某些内容时,您都需要扩展该类型的输入流。因此,如果您想过滤每种类型的输入流,您将需要针对每种类型的输入流的过滤器扩展类。使用装饰器模式,您只需要一种接受输入流的实现,并且可以过滤它们。
关于java - 为什么使用 java.io.Filter* 而不是扩展具体的流实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183933/