package test;
import java.io.IOException;
import java.io.Reader;
public class MyBufferedReader extends Reader{
private Reader r;
MyBufferedReader(Reader r){
this.r = r;
}
public String readLine() throws IOException{
StringBuilder sb = new StringBuilder();
int ch = 0;
while((ch = r.read()) != -1){
if(ch == '\r'){
continue;
}else if(ch == '\n'){
return sb.toString();
}else{
sb.append((char)ch);
}
}
if(sb.length() != 0){
return sb.toString();
}
return null;
}
@Override
public void close() throws IOException {
// TODO 自动生成的方法存根
r.close();
}
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
// TODO 自动生成的方法存根
return r.read(cbuf,off,len);
}
}
tips:装饰模式能够加强一个类的功能,即对该类进行拓展。
与继承相比,它减少了代码的复杂性,更具有可拓展性。
本文介绍了一个使用装饰模式实现的自定义缓冲读取器类。该类通过继承`java.io.Reader`并覆盖其方法来增强原始读取器的功能,实现逐行读取文本文件的能力。文章还讨论了装饰模式相较于继承的优势。
177

被折叠的 条评论
为什么被折叠?



