J2SE中 装饰设计模式之用自定义类去实现BufferedReader类的功能

来源:互联网 发布:手机系统分身软件 编辑:程序博客网 时间:2024/06/08 11:49

          

需求:

  自己构造一个类似BufferedReader的类。

注意,它的出现是基于流并增强了流的功能。这也是一种设计模式的体现:装饰设计模式,对一组对象进行功能的增强。

定义自己的类:MyBufferedReader.java去实现BufferedReader类的功能

 

MyBufferedReader.javapackage 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.javaTestMyBufferedReader.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();       } }


这样一个自己定义的带有缓冲功能的字符输入流类就创建好了,这体现了装饰设计模式。


原创粉丝点击