IO库设计模式

IO库设计模式

ID:40317914

大小:329.99 KB

页数:10页

时间:2019-07-31

IO库设计模式_第1页
IO库设计模式_第2页
IO库设计模式_第3页
IO库设计模式_第4页
IO库设计模式_第5页
资源描述:

《IO库设计模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、JavaI/O库的两个设计模式:Java的I/O库总体设计是符合装饰者模式(Decorator)跟适配器模式(Adapter)的。FileInputStream,FileOutputStream,DataInputStream及DataOutputStream都是流处理器的例子。 1 装饰者模式:在由InputStream,OutputStream,Reader和Writer代表的等级结构内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的,具有改善了的功能的流处理器。装饰者模式是JavaI/O库的整体设计模式。这样的一个原则是符合装饰者模式的,如下图

2、所示:2 适配器模式:在由InputStream,OutputStream,Reader和Writer代表的等级结构内部,有一些流处理器是对其它类型的流源的适配。这就是适配器模式的应用,如下图所示。   适配器模式应用到了原始流处理器的设计上面,构成了I/O库所有流处理器的起点。  三 装饰模式的应用  为什么不用继承而用装饰模式 JavaI/O库需要很多性能的各种组合,如果说这些性能的组合是通过继承方式来实现的话,那么每一种组合都需要一个类,这样就会出现大量重复性问题的出现,从而使类数目“爆炸”。而如果采用装饰模式,那么不仅类的数目大减少了,性能的重复也可以减

3、至到最少。所以装饰模式是JavaI/O库的基本模式。 由于装饰模式的引用,造成了灵活性和复杂都大大增加了,必须理解JavaI/O库是由一些基本的原始流处理器和围绕它们的装饰流处理器所组成的,这样可以在学习和使用JavaI/O库时达到事半功倍的效果。   首先是InputStream类型中的装饰模式: InputStream有七个直接的具体子类,有四个属于FilterInputStream的具体子类,如下图所示:  上图中所有的类都叫做流处理器,这个图就叫做(InputStream类型的)流处理器图。  根据输入流的源的类型,可以将这些流类分成两种,即原始流类(O

4、riginalStream)和链接流处理器(WrapperStream)。   原始流处理器  原始流处理器接收一个Byte数组对象,String对象,FileDiscriptor对象或者不同类型的流源对象,根据上面的图,原始流处理器包括以下四种:  ByteArrayInputStream:为多线程的通信提供缓冲区操作功能,接收一个Byte数组作为流的源。  FileInputStream:建立一个与文件有关的输入流。接收一个File对象作为流的源。  PipedInputStream:可以与PipedOutputStream配合使用,用于读入一个数据管道的数

5、据,接收一个PipedOutputStream作为源。  StringBufferInputStream:将一个字符串缓冲区转换为一个输入流。接收一个String对象作为流的源。(JDK帮助文档上说明:已过时。此类未能正确地将字符转换为字节。从JDK1.1开始,从字符串创建流的首选方法是通过StringReader类进行创建。只有字符串中每个字符的低八位可以由此类使用。) 链接流处理器  所谓链接流处理器,就是可以接收另一个流对象作为源,并对之进行功能扩展的类。InputStream类型的链接处理器包括以下几种,它们都接收另一个InputStream对象作为流源

6、。  (1)FilterInputStream称为过滤输入流,它将另一个输入流作为流源。这个类的子类包括以下几种:  BufferedInputStream:用来从硬盘将数据读入到一个内存缓冲区中,并从缓冲区提供数据。  DataInputStream:提供基于多字节的读取方法,可以读取原始类型的数据。  LineNumberInputStream:提供带有行计数功能的过滤输入流。  PushbackInputStream:提供特殊的功能,可以将已经读取的字节“推回”到输入流中。  (2)ObjectInputStream可以将使用ObjectInputStre

7、am串行化的原始数据类型和对象重新并行化。  (3)SeqcueneInputStream可以将两个已有的输入流连接起来,形成一个输入流,从而将多个输入流排列构成一个输入流序列。  抽象结构图  按照上面的这种原始流处理器和链接流处理器的划分,可以用下面的结构图来描述它们之间的关系。    上面的流处理器图跟装饰模式的结构图有着显而易见的相同之处。实际上InputStream类型的流处理器结构确实符合装饰模式。  装饰模式结构图   对于上图FilterInputStream查看JDK1.6源代码,部分代码如下:Java代码  1.public class Fi

8、lterInputStr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。