适配器模式在JAVA IO中的例子

适配器模式的定义: 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

在JAVA IO中,一个常见的场景: 解析一个文本文件,逐行处理其中的字符串,代码如下:

BufferedReader br = new BufferedReader(new InputStreamReader(is2,"utf8"));(将字节流接口,转换成字符流接口)
br.readLine();

首先因为要逐行解析字符串, 我们需要使用字符流,对文件内容进行处理, 所以使用Reader输入流下面的BufferedReader

BufferedReader并不能直接处理文件,它需要传入一个Reader类型的参数,Reader下面能处理文件的类:InputStreamReader,以及其子类FileReader

这2个类都需要一个InputStream来读取文件中的内容并转换, 这2个类其实就是适配器, 可以把字节流转换成字符流, 然后使用Reader来解析其中的内容


这里的情况就是, 我们需要使用Reader字符流来解析, 但是只有InputStream字节流能直接读取文件内容

所以我们需要一个适配器InputStreamReader, 这个类继承了Reader, 并且持有InputStream的引用, 这是对象适配器的一种


适配器的类图:



对应到IO的例子中,target接口就对应了Reader抽象类, adaptee对应到我们的InputStream, InputStreamReader就是适配器Adapter

适配器有2种形式,第一种是直接继承被适配的类adaptee, 并实现目标接口, 这种属于类适配器,但是JAVA中不能多重继承,所以使用会有限制

另一种是实现目标接口,  并关联被适配的类adaptee,持有adaptee的引用, 属于对象适配器,上面的例子中,使用的就是对象适配器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值