承接上文,我们来看看Reader和InputStream的关系。
Reader(Writer): 提供兼容Unicode和面向字符的I/O功能。
设计Reader(Writer)的目的:
1. 并不是用来代替InputStream(OutputStream)。
2. 主要是为了国际化: 1.0提供的老的I/O流结构仅仅支持8位字节流,却不能很好地处理16位的Unicode字符。所以(其实Java本身的char也是16位的)为了国际化的目的,在JDK1.1中添加了Reader/Writer。
Reader/Writer也是装饰者模式实现,其结构非常类似于InputStream/OutputStream(包括名称)
一. 从Reader入手查看其结构(请参考附件UML图,右边部分)
1. 输入相关的抽象超类: java.io.Reader
2. 将InputStream转化为Reader的适配器: InputStreamReader,继承自Reader
3. 输入相关的基本类:继承自Reader
StringReader
PipedReader
CharArrayReader
FileReader
4. 装饰者超类:继承自Reader,可以用于装饰“3.输入相关的基本类”
BufferedReader
FilterReader
5. 装饰者类:可以用于装饰“3.输入相关的基本类”
LineNumberReader: 继承自BufferedReader
PushbackReader: 继承自FilterReader
举例:
final BufferedReader in =
new BufferedReader(new FileReader(fileName));
二. Reader和InputStream的对应关系:参考Thinking In Java
输入相关的基本类:
Java I/O 1.0 InputStream | Java I/O 1.1 Reader |
InputStream | Reader |
| 适配器: InputStreamReader |
FileInputStream | FileReader |
StringBufferInputStream(已过时) | StringReader |
ByteArrayInputStream(8bit) | CharArrayReader(16bit) |
PipedInputStream | PipedReader |
装饰者类(Filter类)
Java I/O 1.0 InputStream | Java I/O 1.1 Reader | FilterInputStream | FilterReader |
BufferedInputStream | BufferedReader |
LineNumberInputStream(已过时) | LineNumberReader |
PushbackInputStream | PushbackdReader |
- 大小: 228.1 KB
分享到:
相关推荐
装饰模式(Decorator Pattern)是设计模式中的一种结构型模式,它允许在运行时给对象添加新的行为或职责,而无需改变对象的类。在Java中,装饰模式通常通过继承和组合来实现,使得代码具有更好的扩展性和灵活性。...
在Java/IO库中,Decorator模式被广泛用于流处理器的链接和功能增强。例如,`DataInputStream`是一个装饰器,它包装了一个`FileInputStream`,并将字节流转换为Java的原始类型和字符串。类似地,`BufferedInputStream...
在Decorator模式的实现中,每个装饰者类都有一个与被装饰者相同类型的成员变量,以及一个构造函数用于接收并保存被装饰的对象。装饰者通常会重写被装饰者的所有方法,并在这些方法中调用被装饰者的相应方法,以保持...
Decorator模式,也称为装饰模式,是设计模式中的一个重要组成部分,它在不改变原有对象接口的前提下,动态地给对象添加新的功能,从而扩展了对象的能力。这篇博客()将深入探讨这个模式的细节。 装饰模式的核心...
在实际应用中,装饰者模式常常用于对IO流的处理,如BufferedInputStream和DataOutputStream等,它们都继承自InputStream和OutputStream,通过组合的方式增加了缓冲和数据转换等功能。此外,还可以应用于UI组件的扩展...
Java的IO体系结构是编程语言Java中的一个重要组成...理解Decorator模式及其在Java IO中的应用,对于深入掌握Java IO体系至关重要。通过这种方式,开发者可以更高效地管理输入输出操作,提高代码的可维护性和可扩展性。
理解Decorator模式在IO流中的应用对于开发人员来说至关重要,因为它可以帮助我们更有效地利用Java的IO功能。例如,当我们需要提高文件读取速度时,可以使用BufferedInputStream;如果要确保数据传输的完整性,...
在Java IO中,Decorator模式主要体现在各种InputStream、OutputStream、Reader和Writer类的使用上。例如,当我们需要对一个InputStream进行缓冲操作时,可以使用BufferedInputStream,它包装了一个原始的InputStream...
Java的IO模型采用了装饰者模式(Decorator Pattern),这使得开发者可以根据具体需求动态地组合不同的流类来构建所需的IO功能。例如,如果需要一个具有缓冲功能的文件输入流,可以通过组合`FileInputStream`和`...
1. 装饰器模式(Decorator):Java IO系统中广泛使用该模式,通过装饰器模式来扩展IO流的功能。 五、举例说明: 1. Java IO的类和接口:通过查看Java IO包下的类和接口,可以了解到Java在IO上的丰富支持,包括各种...
7. **示例**:在Java IO库中,`InputStream`、`OutputStream`等类就使用了装饰者模式,如`BufferedInputStream`和`DataInputStream`,它们都装饰了原始的`InputStream`,分别增加了缓冲和数据转换的功能。...
这段代码展示了 Java 中常见的 IO 处理方式,同时引出了一个重要的设计模式——装饰者模式(Decorator Pattern)。装饰者模式是一种结构型设计模式,用于在不改变现有对象结构的情况下动态地给该对象添加新的功能。 ...
在装饰模式中,有四个关键角色: 1. 抽象组件(Component):定义一个接口,供真实对象和装饰对象共同实现,确保它们具有相同的行为。 2. 具体组件(Concrete Component):实现抽象组件接口,是被装饰的对象,提供...
装饰模式(Decorator Pattern)是Java设计模式中的一种结构型模式,它允许在运行时动态地向对象添加新的行为或职责,而不会破坏封装性。这种模式可以用来将多个功能组合在一起,同时保持类的可扩展性和灵活性。在...
在Java的IO库中,装饰器模式得到了广泛应用。例如,`BufferedInputStream`就是一种装饰器,它包装了基本的`InputStream`,增加了缓冲功能,使得读取数据更加高效。装饰器模式下,高级流(如`BufferedInputStream`)...
装饰者模式(Decorator) 装饰者模式是在不改变现有对象的基础上,动态地给该对象增加一些职责。JDK中装饰者模式的应用包括: - `java.io.BufferedInputStream(InputStream)`: 增加缓冲功能的输入流。 - `java.io....
它提供了一个面向对象的API,并且在Java IO库中采用了装饰器模式(Decorator Pattern)来减少类的数量,使得整个框架既灵活又易于扩展。Java的IO系统主要由两大块组成: 1. **堵塞型IO (Blocking IO)**:位于`java.io...