先看一下 InputStream 部分子类的关系。
流 要输入输出得有来源吧?我要是从文件而来,那就要用FileInputStream,要是从字节数组来,就要用ByteArrayInputStream。这些类提供了基本的输入功能。
现在遇到一个问题,比如说FileInputStream要从文件里读取。但是每次都要进行IO操作会非常慢,想先缓冲一下然后在去处理怎么办。也就是想加入缓冲的功能。怎么扩展这样的功能呢?用装饰模式来扩展吧。
于是就有了BufferedInputStream 。BufferedInputStream是一个装饰器。
关于IO 的装饰模式见 http://pb-water.iteye.com/admin/blogs/680569