通信的基础是IO模型
数据源———数据流———>应用
数据源<——-数据流———-应用

一、数据流

IO流总括图

image.png

字符流更复杂扩展

image.png
Buffer~:设置缓冲区,一次性多读取数据,省去了源文件的多次读取
Filter~:对字符流额外操作
InputStream~:两种流的转换,因为存储方式为逐字节存储,所以要将字节转换为字符。

字节流更复杂扩展

image.png
Buffered~:设置缓冲区,一次性多读取数据,省去了源文件的多次读取
Data~:对基本类型变量输入输出

二、装饰器模式

例如BufferedInputStream:

  1. public BufferedInputStream(InputStream in, int size) {
  2. super(in);
  3. if (size <= 0) {
  4. throw new IllegalArgumentException("Buffer size <= 0");
  5. }
  6. buf = new byte[size];
  7. }

显然,构造方法接受一个InputStream对象结构如下:

image.png
InputStream可以向上转型为各种子类,BufferedInputStream这样就不仅可以拥有自己的属性,还可以拥有加入的InputStream的属性。
装饰器不更改基本属性还可以叠加多个装饰器模式。