java----装饰类思想

来源:互联网 发布:python生成随机数 编辑:程序博客网 时间:2024/06/05 13:04

/** * 需求:  读取文件时readLine() 实际调用的是 read()方法,可以自定义一个readLine()方法 * 这个程序的作用是:调用自己写的和readLine()一样的,读取文件的方法,一次读取一行。  * *在这里:用到了装饰类的思想,在原有的功能基础上对原有功能的加强。 *  * 装饰类和继承的区别: * 装饰类比继承类要灵活,避免继承体系的臃肿。 * 降低了类与类之间的关系,。 *  * 装饰类因为增强已有对象,具备的功能是和已有的是相同的(比如读取方法read() 和readLine()方法都是读取), * 只不过提供了更强的功能。 * 所以装饰类和被装饰类通常属于同一个体系。 * * @author 六道 * */import java.io.*;class MyBufferedReader{    private FileReader r = null;    MyBufferedReader(FileReader r)    {this.r = r;    }    public String ReadLine() throws IOException    {StringBuffer sb = new StringBuffer();// Stringbuffer() 构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。int ch = 0;while ((ch = r.read()) != -1){    if (ch == '\r')// 如果文件读到\r    {continue;    }    if (ch == '\n')// 如果文件读到\n    {return sb.toString();    }    if(sb.length() != 0)//如果到了结尾 因为结尾没有回车符 所以到了结尾也要返回数据    {return sb.toString();    }    else    {sb.append((char)ch);//这里添加的时候注意要强制转换成char类型    }}return null;    }    public void myClose() throws IOException    {r.close();    }}public class ReadLineDemo1{    public static void main(String[] args) throws IOException    {FileReader fr = new FileReader("buf.txt");MyBufferedReader mybuf = new MyBufferedReader(fr);String len = null;while ((len = mybuf.ReadLine()) != null){    System.out.println(len);}mybuf.myClose();    }}

 ------- android培训、java培训、期待与您交流! ----------