J2SE中带缓冲的字符流与装饰设计模式

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

   

    缓冲的字符流BufferedReader/BufferedWriter

采用缓冲处理是为了提高效率,如果没有缓存,例如FileReader对象,每次调用read()方法进行读操作时,都会直接去文件中读取字节,转换成字符并返回,这样频繁的读取文件效率很低。

 

缓冲的字符流的出现提高了对流的操作效率,原理就是将数组进行封装。

 

在使用缓冲的字符流对象时,缓冲的存在是为了增强流的功能,因此在建立缓冲的字符流对象时,要先有流对象的存在。

public BufferedReader(Reader in) ;

public BufferedReader(Reader in, int sz)

public BufferedWriter(Writer out) ;

public BufferedWriter(Writer out, int sz);

 

BufferedReader的特有方法:public StringreadLine();//一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回。当读到末尾时,返回null。

 

BufferedWriter的特有方法:public void newLine();//写出平台相关的行分隔符来标记一行的终止。Windows平台下为’\n’。

使用缓冲的字符流时其实就是使用流对象的方法,只不过加入了数组,对数据进行了临时存储,为了提高操作数据的效率。

 

     方法readLine()的原理:该方法用的还是与缓冲的字符流相关联的流对象的read()方法,只不过,每一次读到一个字符,先不进行具体操作,先进行临时存储,当读取到回车标记时,将临时容器中存储的数据一次性返回。

 

装饰设计模式,其实就是对一组对象进行功能的增强。

 

   装饰设计模式和继承有什么区别?

       装饰设计模式比继承有更好的灵活性

Writer

                       MediaWriter

                       TextWriter

需求:想要对数据的操作提高效率,就用到了缓冲技术。

   方法:通过所学的继承特性,可以建立MediaWriter类的子类和TextWriter类的子类,在子类中重写父类的write方法即可

Writer

          MediaWriter

                         BufferedMediaWriter

          TextWriter

                         BufferedTextWriter

问题:当Writer中子类对象过多,那么为了提高每一个对象效率,每一个对象都有 一个自己的子类Buffered。虽然可以实现,但是继承体系变的很臃肿。那么是否可以对其进行优化呢?

 

解决方法:增加的这些子类都是在使用缓冲技术。可不可以对缓冲技术进行描述,将需要增强的对象传递给缓冲区即可。

 

class BufferdWriter{

              BufferedWriter(MediaWritermw){}

              BufferedWriter(TextWritermw){}

}

 

 

出现的新的问题:该类虽然完成对已有两个对象的增强。但是当有新的对象出现时,还要继续在该类中添加构造函数。这样不利于扩展和维护。

 

解决方法:将对这些对象父类型进行操作即可。这就是多态,提高了程序的扩展性。同时BufferedWriter中一样具体write方法,只不过是增强后的write。所以BuferedWriter也应该是Writer中的一个子类。

 

class BufferedWriter extends Writer{

       privateWriter w;

       BufferedWriter(Writerw){

              this.w= w;

       }

}

 

 

Writer

         MediaWriter

         TextWriter

          BufferedWriter

 

装饰类和被装饰类都同属于一个父类或接口

 

结论:这样就会发现装饰设计模式,优化增强功能的部分。比继承要灵活很多。

 


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 和老师吵架了怎么办 孩子初中转学学籍怎么办 孩子上初中学籍怎么办 18孩子不想上学怎么办 宝宝不爱吃蔬菜怎么办 孩子总丢东西怎么办 孩子经常丢东西怎么办 孩子总是丢东西怎么办 孩子负能量太多怎么办 不要孩子老了怎么办 父母都内向孩子怎么办 孩子不喜欢读课外书怎么办 学习学不进去怎么办 小孩停不下来怎么办 小孩老爱玩不爱学习怎么办 小孩子不喜欢吃菜怎么办 孩子初中不爱学习怎么办 大学不爱学家长怎么办 小孩子不爱读书不听话怎么办 小孩不爱读书写字怎么办 一年级学生不爱学习怎么办 孩子练字怕累怎么办 孩子不愿意学英语怎么办 生了儿子 不喜欢 怎么办 养两个儿子的怎么办 看诗词记不住怎么办 经常读书记不住怎么办 孩子不爱记数字怎么办 考研学不进去怎么办 读了职高后悔怎么办 不喜欢看书的人怎么办 生的儿子不喜欢怎么办 孩子上网不回家怎么办 儿子不想读书了怎么办 中考体育考不好怎么办 小孩突然没礼貌怎么办 小孩读书记忆差怎么办 这几天不爱吃饭怎么办 读书读到不懂的怎么办 读书很多词不懂怎么办 看书看不进去怎么办