通过源码认识设计模式-装饰器模式(JAVA I/O流)

本文介绍了Java I/O流的分类,包括字符流和字节流、输入流和输出流,以及核心类的层级结构。接着,讨论了装饰器模式,解释了其在扩展类功能时的优势,避免子类膨胀和提高代码灵活性。通过分析BufferedInputStream的源码,展示了装饰器模式如何在Java I/O流中实现,如提供缓冲和mark/reset功能。最后,总结了装饰器模式的应用场景和价值。
摘要由CSDN通过智能技术生成

1.java/IO流

  • 什么是流

简单理解,数据在两个设备之间进行的是流传输(流的本质就是数据传输);

  • 分类

根据数据类型不同分为字符流(以字符为单位),字节流(以字节为单位)其中字节流可以处理所有类型的数据

根据数据的流向分为输入流和输出流

  • java/io的知识架构图

image.png

  1. InputStream 是所有输入字节流的父类,他是一个抽象类

其下面的子类:

ByteArrayInputStream、StringBufferInputStream、FileInputStream 这三个是基础的输入流,他们分别读Byte 数组、StringBuffer、和文件系统中的文件中读取数据

PipedInputStream 连接管道输入流到管道输出流;然后管道输入流提供写入管道输出流的任何数据字节 一个线程从PipedInputStream对象读取数据,并将数据写入相应的 pipeoutputstream

ObjectInputStream和FilterInputStream都是装饰流(例如我们常用的BufferedInputStream

  1. OutputStream 是所有输出字节流的父类,它是一个抽象类。其内容和字节输入流InputStream类似 只是一个是输入 一个是输出

  2. Reader 和Writer是字符的输入输出流

    </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值