初学java.io的时候容易被众多的IO类搞晕头,其实java.io还是很容易理解的,主要就是通过装饰模式来进行功能的扩充。
扩充基类的功能,一般我们都是通过继承来解决的,但是继承会造成类的膨胀,而使用装饰模式就不会。其实装饰模式就是在扩展类里面搞了个被扩展类的引用而已。
package design.decorator;
/**
* “装饰模式(Decorator)”又名“包装模式(Wrapper)”,通常用来灵活地扩充对象的功能。
* 在此之前我们可以通过类的继承来扩充父类的功能,但这种继承方式缺乏灵活性
* ,并且会导到子类数量的快速膨胀。恰当地使用装饰模式我们会轻松实现在控制子类数量的基础上,灵活地实现对象功能的扩展。装饰模式比类的继承更灵活。
*/
public class Test {
public static void main(String[] args) {
FileInputStream in = new FileInputStream(new InputStream());
in.read();
}
}
class InputStream {
public void read() {
System.out.println("InputStream.read");
}
}
class FileInputStream extends InputStream {
protected InputStream in;
public FileInputStream(InputStream in) {
super();
this.in = in;
}
public void read() {
//文件流可以对基本的流进行包装一下
in.read();
System.out.println("FileInputStream.read");
}
}
分享到:
相关推荐
总的来说,Java IO利用装饰模式构建了一个灵活且易于扩展的流处理框架,允许我们在运行时动态地增加流的功能,而无需改变原有代码。这种设计模式在许多其他领域也有广泛应用,如网络编程、数据库访问等,体现了面向...
Java的I/O设计遵循了一种称为“装饰者模式”的组织模式,允许在不改变原有类的基础上增加新的功能。 在进行I/O操作时,一般需要以下步骤: 1. 创建一个与特定介质(如文件、网络连接等)相关的输入/输出对象。 2. ...
Java IO流的设计采用了装饰者模式,形成了丰富的层次结构。通过组合不同的装饰流,可以实现各种复杂的数据处理需求,如转换编码、压缩、加密等。 三、管道流和缓冲流 - PipedInputStream和PipedOutputStream允许在...
- **装饰器模式**:Java IO流的设计采用了装饰器模式,使得可以通过组合不同的流来构建具有复杂功能的流。例如,可以通过组合`FileInputStream`和`BufferedInputStream`来创建一个带缓冲功能的文件输入流。 #### 三...
### JAVA IO流学习知识点 #### 一、Java IO流概念及背景 - **引入原因**:在Java中,为了能够方便地与外部设备(如硬盘、网络等)进行数据交互,设计了一套标准的输入输出处理机制,即IO流。这使得程序能够更加...
五、过滤流与装饰模式 过滤流(Filter Stream)是装饰流的一种,它们通过包装其他流来增加新的功能。例如: - BufferedInputStream和BufferedOutputStream:提高读写速度。 - PrintStream:允许格式化的输出,并能...
虽然这份文档主要讨论的是IO流的内容,但在最后一部分提到了一个有趣的问题:“OOP的继承性和装饰模式有什么区别?”这里简单解释一下: - **继承性**:面向对象编程中的一个重要概念,它允许一个类继承另一个类的...
Java的IO流体系是Java平台的核心特性之一,用于处理数据的输入和输出。这个体系结构设计得相当丰富和灵活,可以适应多种不同的场景。我们主要从两个方面来理解这个体系:对称性质和处理器模式。 首先,IO流的对称...
Java IO流是Java编程语言中用于处理输入输出的重要机制,其设计完全面向对象,通过装饰器模式大大减少了类的数量,提供了强大的扩展性。在Java IO系统中,主要关注三个方面:流式部分、非流式部分以及文件读取相关类...
Java的IO流设计非常优雅,采用了装饰者模式(Decorator Pattern),允许用户动态地组合不同的流,以实现所需的功能。例如,结合使用`FileInputStream`和`BufferedInputStream`可以获得一个具有缓冲功能的文件输入流...
Java IO流是Java平台中...总结,Java IO流是Java平台中处理输入输出的基础,其丰富的类库和设计模式为开发者提供了灵活、高效的数据传输手段。通过深入理解和熟练运用这些知识点,能够更好地应对各种IO相关的编程挑战。
处理流遵循装饰者设计模式,不改变原有接口,增加新的功能。例如,`BufferedReader`和`BufferedWriter`增加了缓冲功能,可以一次性处理更多数据,提高效率。 6. **常用流的分类** 常见的流类可以按照它们的抽象...
过滤流(FilterInputStream, FilterOutputStream, FilterReader, FilterWriter)是装饰者模式的应用,可以附加额外的功能,如数据校验、压缩、加密等。 10. **网络流**: Java的Socket和ServerSocket类提供了网络...
2. Java中的流对象及其特点:Java的IO库中定义了多种流对象,主要分为字节流和字符流两大类,它们又分别有输入流和输出流之分。字节流包括InputStream和OutputStream,字符流包括Reader和Writer。字节流适用于处理...
在输入流中,FilterInputStream类提供了一种装饰者模式,可以添加额外的功能到已有的输入流上,如BufferedInputStream可以增加缓冲功能,提高读取性能。在输出流中,也有类似的FilterOutputStream类,例如...
Java IO流是Java平台核心特性之一,用于处理输入和输出数据。这个概念是Java编程中的基石,对于任何涉及数据传输或文件操作的应用程序都至关重要。《IO流宝典》这本书全面深入地探讨了这一主题,旨在帮助读者从基础...
4. **过滤器流**(Filter Stream):这是Java I/O设计模式的一种体现,也称为装饰器模式。过滤器流不直接与数据源或目的地交互,而是包装在一个已存在的流上,用于扩展或修改其功能。例如,`BufferedInputStream`和`...
装饰器模式在Java IO流中广泛应用,通过FilterInputStream、FilterOutputStream、FilterReader和FilterWriter等类,可以增强原有流的功能,例如BufferedInputStream和BufferedOutputStream提供了缓冲功能,提高读写...