Java IO流中的设计模式
本文最后更新于 2025-11-13,文章内容可能已经过时。
Java IO流主要使用了以下几种设计模式,其中装饰器模式是最核心、最广泛使用的
1. 装饰器模式(Decorator Pattern)
这是Java IO流中使用最核心的设计模式,用于增强原始流的功能,而不改变其接口。
-
原理:通过组合而非继承来扩展功能,可以嵌套使用多个装饰器
-
实现:FilterInputStream(输入流装饰器)和FilterOutputStream(输出流装饰器)是核心
-
典型应用:
// 字节流装饰示例 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("file.txt")); // 字符流装饰示例 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file.txt"), "UTF-8")); -
优势:避免了为每个流子类创建专门的装饰类,实现灵活组合
2. 适配器模式(Adapter Pattern)
- 作用:解决字节流和字符流之间的接口不兼容问题
- 实现:
- InputStreamReader:将字节流转换为字符流
- OutputStreamWriter:将字符流转换为字节流
- 原理:通过组合方式(对象适配器),将字节流对象适配成字符流对象
3. 工厂模式(Factory Pattern)
- 应用场景:NIO中
- 典型例子:
- Files.newInputStream():创建InputStream对象(静态工厂)
- Paths.get():创建Path对象(静态工厂)
- ZipFileSystem.getPath():创建Path对象(简单工厂)
4. 观察者模式(Observer Pattern)
- 应用场景:NIO中的文件目录监听服务
- 实现:
- WatchService:观察者
- Watchable:被观察者
为什么使用装饰器模式?
"如果InputStream的子类比较少的话,这样做是没问题的。不过,InputStream的子类实在太多,继承关系也太复杂了。如果我们为每一个子类都定制一个对应的缓冲输入流,那岂不是太麻烦了。"
装饰器模式使Java IO流能够:
- 避免类爆炸(不需要为每个流子类创建专门的装饰类)
- 实现功能的灵活组合
- 保持接口一致性
- 提高代码复用率
总结:Java IO流的核心设计模式是装饰器模式,它让流的处理变得灵活、高效,能够通过简单的组合实现复杂的功能。而适配器模式则解决了字节流和字符流之间的接口兼容问题。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 软件从业者Hort
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

