JAVA中输入输出总结
2011-02-22 19:55
260 查看
任何java应用程序都要和IO打交道,对IO有一个清新的了解是java程序员最基本的要求,本文主要介绍java.io的设计原理、接口、以及常用的输入输出类。在讲java.io的设计原理之前,先介绍一点与设计模式相关的知识。
Decorator模式
《设计模式》中对Decorator模式的意图是这样描述的:“动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活[1]。”Decorator模式的工作原理是:“可以创建始于Decorator对象(负责新功能的对象)终于原对象的一个“链”。”
图1:Decorator模式的通用结构图
图1就是Decorator模式的UML图,它通过给对象添加装饰来动态的添加新的功能:
Component为组件和装饰的公共父类,它定义了子类必须实现的方法。
ConcreteComponent是一个具体的组件类,可以通过给它添加装饰来增加新的功能。
Decorator是所有装饰的公共父类,它定义了所有装饰必须实现的方法,同时,它还保存了一个对于Component的引用,以便将用户的请求转发给Component,并可能在转发请求前后执行一些附加的动作。
ConcreteDecoratorA和ConcreteDecoratorB是具体的装饰,可以使用它们来装饰具体的Component.
JDK5.0中60多个IO流类组成了四大家族:InputStream,OutputStream,Reader,Writer。
InputStream/OutputStream是对字节序列进行操作的抽象类。
Reader/Writer是基于Unicode代码单元进行操作的抽象类。
输入-输出对称性,比如InputStream和OutputStream各自占据Byte流的输入与输出的两个平行的等级结构的根部。而Reader和Writer各自占据Char流的输入与输出的两个平行的等级结构的根部。
byte-char对称,InputStream和Reader的子类分别负责Byte和Char流的输入;OutputStream和Writer的子类分别负责Byte和Char流的输出,它们分别形成平行的等级结构。
以InputStream来看看它的设计原理,首先看看其UML类图:
图2:InputStream的UML类图
java因为其令人迷惑的多种流输入及相关的类而令人头疼。在Decorator模式的背景下,我们来重新认识一下其输入类:
InputStream——具有读入功能的抽象被装饰器。
AudioInputStream, ByteArrayInputStream, FileInputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream——具有读入功能的具体被装饰器。
FilterInputStream ——具备装饰器的抽象意义,所有的装饰器都直接或间接地派生自FilterInputStream。
BufferedInputStream,DataInputStream,LineNumberInputStream,PushbackInputStream——具有具体功能的装饰器。
理解了Decorator模式就可以解释为什么Java要求这些对象一个封装在另一个里面——这使程序员能够从可获得的不同的行为中选取任意数量的组合。同理,可解释Output、Writer、Reader。
转自:http://shihaiyang.javaeye.com/blog/441109
Decorator模式
《设计模式》中对Decorator模式的意图是这样描述的:“动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活[1]。”Decorator模式的工作原理是:“可以创建始于Decorator对象(负责新功能的对象)终于原对象的一个“链”。”
图1:Decorator模式的通用结构图
图1就是Decorator模式的UML图,它通过给对象添加装饰来动态的添加新的功能:
Component为组件和装饰的公共父类,它定义了子类必须实现的方法。
ConcreteComponent是一个具体的组件类,可以通过给它添加装饰来增加新的功能。
Decorator是所有装饰的公共父类,它定义了所有装饰必须实现的方法,同时,它还保存了一个对于Component的引用,以便将用户的请求转发给Component,并可能在转发请求前后执行一些附加的动作。
ConcreteDecoratorA和ConcreteDecoratorB是具体的装饰,可以使用它们来装饰具体的Component.
JDK5.0中60多个IO流类组成了四大家族:InputStream,OutputStream,Reader,Writer。
InputStream/OutputStream是对字节序列进行操作的抽象类。
Reader/Writer是基于Unicode代码单元进行操作的抽象类。
输入-输出对称性,比如InputStream和OutputStream各自占据Byte流的输入与输出的两个平行的等级结构的根部。而Reader和Writer各自占据Char流的输入与输出的两个平行的等级结构的根部。
byte-char对称,InputStream和Reader的子类分别负责Byte和Char流的输入;OutputStream和Writer的子类分别负责Byte和Char流的输出,它们分别形成平行的等级结构。
以InputStream来看看它的设计原理,首先看看其UML类图:
图2:InputStream的UML类图
java因为其令人迷惑的多种流输入及相关的类而令人头疼。在Decorator模式的背景下,我们来重新认识一下其输入类:
InputStream——具有读入功能的抽象被装饰器。
AudioInputStream, ByteArrayInputStream, FileInputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream——具有读入功能的具体被装饰器。
FilterInputStream ——具备装饰器的抽象意义,所有的装饰器都直接或间接地派生自FilterInputStream。
BufferedInputStream,DataInputStream,LineNumberInputStream,PushbackInputStream——具有具体功能的装饰器。
理解了Decorator模式就可以解释为什么Java要求这些对象一个封装在另一个里面——这使程序员能够从可获得的不同的行为中选取任意数量的组合。同理,可解释Output、Writer、Reader。
转自:http://shihaiyang.javaeye.com/blog/441109
相关文章推荐
- java二十二节-输入输出总结
- java io 流 输入输出 大牛经典总结
- java核心技术卷二文件输入输出总结
- Java标准输入输出+基础理论+基本数据类型总结
- Java中的输入输出总结
- java io 流 输入输出 大牛经典总结
- java IO总结之字节流操作控制台输入输出(高效)
- java IO总结之字符流操作控制台输入输出(高效)
- java io 流 输入输出 大牛经典总结
- JAVA知识专题总结之输入输出
- java中输入输出总结
- Java中的输入输出(I/O)总结
- 算法(第四版) 学习总结三 Java输入输出、二分查找、源代码地址
- java中输入输出的总结
- Java总结<三>多线程
- java集合总结(转载)
- 黑马程序员-JAVA基础学习日记八——IO流的学习总结
- Java菜鸟总结
- JAVA与C++::关于JNI中文字符串操作问题总结
- JAVA 基础知识总结了一下基础知识。