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:装饰模式能够加强一个类的功能,即对该类进行拓展。
与继承相比,它减少了代码的复杂性,更具有可拓展性。