Java IO 设计模式总结

Java IO设计模式总结

一、装饰器模式

装饰器模式(Decorator)可以在不改变原有对象的情况下拓展其功能。装饰器模式通过组合替代继承来扩展原始类的功能,在一些继承关系比较复杂的场景(IO这一场景各种类的继承关系就比较复杂)更加实用。

对于字节流来说,FilterInputStream(对应输入流)和FilterOutputStream(对应输出流)是装饰器模式的核心,分别用于增强InputStream和OutputStream子类对象的功能。

  • 装饰器模式很重要的一个特征,那就是可以对原始类嵌套使用多个装饰器。为了实现这一效果,装饰器类需要跟原始类继承相同的抽象类或者实现相同的接口。

二、适配器模式

适配器(Adapter Pattern)模式主要用于接口互不兼容的类的协调工作,可以将其联想到我们日常经常使用的电源适配器。

适配器模式中存在被适配的对象或者类称为适配者,作用于适配者的对象或者类称为适配器。适配器分为对象适配器和类适配器。类适配器使用继承关系实现,对象适配器使用组合关系来实现。IO流中的字符流和字节流的接口不同,它们之间可以协调工作就是基于适配器模式来做的,是对象适配器。通过适配器,我们可以将字节流对象适配成一个字符流对象,这样我们可以直接通过字节流对象来读取或者写入字符数据。

  • 适配器模式和装饰器模式有什么区别?

装饰器模式更侧重于动态地增强原始类的功能,装饰器类需要跟原始类继承相同的抽象类或者实现相同的接口。并且,装饰器模式支持对原始类嵌套使用多个装饰器。

适配器模式更侧重于让接口不兼容而不能交互的类可以一起工作,当我们调用适配器对应的方法时,适配器内部会调用适配者或者和适配类相关的类的方法,这个过程透明的。

三、工厂模式

工厂模式用于创建对象,NIO(New IO)中大量用到了工厂模式,比如Files类的newInputStream方法用于创建InputStream对象(静态工厂)、Paths类的get方法创建Path对象(静态工厂)、ZipFileSystem类的getPath的方法创建Path对象(简单工厂)。

四、观察者模式

NIO中的文件目录监听服务使用到了观察者模式。

NIO中的文件目录监听服务基于WatchService接口和Watchable接口。WatchService属于观察者,Watchable属于被观察者。

Watchable接口定义了一个用于将对象注册到WatchService(监控服务)并绑定监听事件的方法register

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zero摄氏度

感谢鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值