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
装饰类和被装饰类都同属于一个父类或接口
结论:这样就会发现装饰设计模式,优化增强功能的部分。比继承要灵活很多。
- J2SE中带缓冲的字符流与装饰设计模式
- 我的字符缓冲输入流(装饰设计模式)
- 心得---字符流、缓冲流、装饰模式
- java装饰设计模式------缓冲流
- 黑马程序员 io中的缓冲字符流,装饰设计模式(毕向东)
- J2SE中 装饰设计模式之用自定义类去实现BufferedReader类的功能
- 11对缓冲流分析出来的设计模式--装饰设计模式
- 字符流与装饰设计
- Java基础21--IO流--装饰设计模式--缓冲流
- java IO流 [缓冲技术] [装饰设计模式]
- 第21天 输入字符流、输出字符流、缓冲字符流、装饰者模式
- IO流-字符流,设计模式--装饰模式
- java 设计模式中 装饰者模式 与 代理模式的区别
- IO流中出现的装饰设计模式
- 字符流的缓冲区和装饰模式
- 装饰设计模式与代理设计模式的异同
- java中常用的设计模式-装饰设计模式
- 设计模式之--装饰模式与代理模式的区别
- 拥有特权 使用system账户
- 如何判断单链表里面是否有环
- 90後总有一些人:关于90后的那些点点滴滴
- 《冰河世纪4:大陆漂移》观后感
- 软件质量管理
- J2SE中带缓冲的字符流与装饰设计模式
- J2SE中 装饰设计模式之用自定义类去实现BufferedReader类的功能
- 几度苍凉的伤感独特日志发布:想要逃,却怎么也逃不掉
- J2SE中 用不同形式的流完成对文件的拷贝
- 字符编码笔记:ASCII,Unicode和UTF-8
- 如何解决电脑速度慢?
- 希望你以后能够学会怎样好好的去爱一个人
- 插值方法-拉格朗日多项式
- 保护模式,实模式