FilterInputStream通俗点讲到底有什么用?
Topic source没有 FilterInputStream 的话,所有功能性子类相当于是所有功能组合而成的笛卡尔集。
有了 FilterInputStream 的话,功能性子类的数量随功能线性增长。
FilterInputStream可以作用于任何一个提供数据的基础的类
比如:提供数据的基础的类5个,2个功能类
没有FilterInputStream 每个基础类都要派生2个功能子类
那么新增类 5*2,且增加一个功能子类就是 5*(2+1)
有了FilterInputStream
那么一共有的类是5+Filter+2,且增加一个功能子类就是 5+Filter+(2+1)
楼上在说啥 有点迷糊
我的理解就是 少了 多个功能的子类而已
之前:
如果要给FileInputStream
添加缓冲和签名的功能,那么我们还需要派生BufferedDigestFileInputStream
。如果要给FileInputStream
添加缓冲和加解密的功能,则需要派生BufferedCipherFileInputStream
。
现在:
BufferedDigestFileInputStream 和 BufferedCipherFileInputStream 都不需要了
个人理解:FilterInputStream 将所有的数据源输入流统一起来,需要添加某个功能时,直接定义一个子类继承 FilterInputStream (如果还需要继续叠加功能,继续继承子类),
需要使用某功能或组合的功能时,实例化对应的功能子类,传入特定数据源输入流即可(比如文件、网络、内存模拟数据源等)。(诚惶诚恐@_@)
- 1
The__Wolf
如果没有FilterInputStream,比如说要给FileInputStream加功能,就是用子类继承然后实现。
有了FilterInputStream以后,就是用子类继承FilterInputStream实现,但这样依然会有很多子类啊,只相当于多了一个代理。