通信的基础是IO模型
数据源———数据流———>应用
数据源<——-数据流———-应用
一、数据流
IO流总括图
字符流更复杂扩展
Buffer~:设置缓冲区,一次性多读取数据,省去了源文件的多次读取
Filter~:对字符流额外操作
InputStream~:两种流的转换,因为存储方式为逐字节存储,所以要将字节转换为字符。
字节流更复杂扩展
Buffered~:设置缓冲区,一次性多读取数据,省去了源文件的多次读取
Data~:对基本类型变量输入输出
二、装饰器模式
例如BufferedInputStream:
public BufferedInputStream(InputStream in, int size) {
super(in);
if (size <= 0) {
throw new IllegalArgumentException("Buffer size <= 0");
}
buf = new byte[size];
}
显然,构造方法接受一个InputStream对象结构如下:
InputStream可以向上转型为各种子类,BufferedInputStream这样就不仅可以拥有自己的属性,还可以拥有加入的InputStream的属性。
装饰器不更改基本属性还可以叠加多个装饰器模式。