首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

(IO)装点设计模式

2013-11-15 
(IO)装饰设计模式package com.gc.fileimport java.io.FileReaderimport java.io.IOExceptionimport jav

(IO)装饰设计模式
package com.gc.file;import java.io.FileReader;import java.io.IOException;import java.io.Reader;/** * 使用字符缓冲区对Reader进行装饰---提高读取速度 * 每次读取磁盘时,读一批数据到字符数组(缓冲区)中 * 外界取得时候直接从缓冲区中获取数据,因此速度快! * */public class MyBufferedReader {private Reader reader;//底层仍然用Reader的方法,但是对外提供了增强的读取功能public MyBufferedReader(Reader reader) {this.reader = reader;}private char[] cbuf = new char[1024];//字符缓冲区private int pos = 0;//记录读取位置private int count = 0;//记录总数public int myRead() throws IOException {if(count==0) {//往字符缓冲区读,底层用到的仍然是Reader的read()count = reader.read(cbuf);//从新读取后,指针归0pos = 0;}if(count<0)return -1;count--;//返回的时候直接操作缓冲区,而不是去磁盘读1个返回1个,提高了效率---装饰:本质不变,但增强了功能(提高读取速度)char ch = cbuf[pos++];return ch;}public static void main(String[] args) throws IOException {MyBufferedReader myReader = new MyBufferedReader(new FileReader("temp\\text.txt"));int ch = 0;while((ch=myReader.myRead())!=-1) {System.out.print((char)ch);}}}

?

?

层层包装---装饰

(将底层功能进行了隐藏)

不管怎么装饰,仍离不开原始的功能

基于原始功能再进行扩展对外暴露的则是扩展后的功能


(IO)装点设计模式
?

?

?

热点排行