J2SE中 装点设计模式之用自定义类去实现BufferedReader类的功能
J2SE中 装饰设计模式之用自定义类去实现BufferedReader类的功能
需求:
自己构造一个类似BufferedReader的类。
注意,它的出现是基于流并增强了流的功能。这也是一种设计模式的体现:装饰设计模式,对一组对象进行功能的增强。
定义自己的类:MyBufferedReader.java去实现BufferedReader类的功能
MyBufferedReader.java
package bufferedstream;
import java.io.IOException;
import java.io.Reader;
public class MyBufferedReader {
Reader r;
publicMyBufferedReader(Reader r){
this.r= r;
}
publicString myReaderLine() throws IOException{
StringBuffersb = new StringBuffer();
intlen = 0;
while((len = r.read())!= -1) {
if(len== '\r')
continue;
if(len== '\n')
returnsb.toString();
else
sb.append((char)len);
}
if(sb.length()!=0){
return sb.toString();
}
returnnull;
}
publicvoid myClose() throws IOException{
r.close();
}
}
定义一个测试类:去测试该自定义类是否满足要求。
TestMyBufferedReader.java
TestMyBufferedReader.java
packagebufferedstream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class TestMyBufferedReader {
publicstatic void main(String[] args) throws IOException {
FileReader fr = new FileReader(new File("D:/buffered.txt"));
MyBufferedReadermbr = new MyBufferedReader(fr);
Stringcontent = null;
while((content = mbr.myReaderLine())!= null) {
System.out.println(content);
}
mbr.myClose();
}
}
这样一个自己定义的带有缓冲功能的字符输入流类就创建好了,这体现了装饰设计模式。