/*
* 装饰设计模式:(构造函数传递已有对象,功能增强)
* 当想要对已有对象进行功能增强时,基于已有的功能,并提供增强的功能,更灵活
* 那么自定义的类称为装饰类
*
*/
class MyBufferReader{
private FileReader r;MyBufferReader(FileReader r){
this.r=r;
}
//功能类,抛出去
public String myReadLine() throws IOException{
//定义一个临时容器,原BufferReader封装的是字符数组
//这里为了方便使用StringBUilder
StringBuilder sb=new StringBuilder();
int ch=0;
while((ch=r.read())!=-1){
if((char)ch=='\r'){
continue;
}
if((char)ch=='\n'){
return sb.toString();
}
else
sb.append((char)ch);
}
if(sb.length()!=0){
return sb.toString();//防止最后一行没\r\n数据不返回
}
return null;
}
public void myClose() throws IOException{
r.close();
}
}