包装流使用了修饰器模式,不会与原数据直接相连,提高了处理效率。同时他也提供了一系列便捷 的方法来处理一次输入大批量的数据。下面的代码就是简单模拟一下包装流,便于大家理解修饰器模式。
package read_;
public class Test {
public static void main(String[] args) {
BufferedReader_ bufferedReader = new BufferedReader_(new FileReader_());
bufferedReader.readFile(3);
BufferedReader_ bufferedReader1 = new BufferedReader_(new StringReader_());
bufferedReader1.readString(3);
}
}
//模拟处理流
public class StringReader_ extends read_{
@Override
public void readString() {
System.out.println("处理字符串流");
}
}
//模拟节点流
public class FileReader_ extends read_{
@Override
public void readFile() {
System.out.println("处理文件流");
}
}
//模拟包装流(处理流)
public class BufferedReader_ extends read_{
private read_ read_;
public BufferedReader_(read_ read_) {
this.read_ = read_;
}
@Override
public void readFile() {//做一层封装
read_.readFile();
}
//让方法更加灵活,多次读取文件,也可以增加缓存
public void readFile(int num){
for (int i = 0; i <num ; i++) {
read_.readFile();
}
}
@Override
public void readString() {
read_.readString();
}
public void readString(int num ){
for (int i = 0; i <num ; i++) {
read_.readString();
}
}
}
public abstract class read_ {//抽象类
public void readFile(){}
public void readString(){}
}