[置顶] 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(); } }


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


你可能感兴趣的:(设计模式,J2SE,测试,null,Class,import)