IO中的设计模式

java的IO中主要有适配器和装饰器两种设计模式。简要说明下这两种设计模式,适配器,生活中就有这个东西嘛,现在很多手机取消了耳机孔,用一个适配器你就可以用type-C充放口听歌了。即,将一个接口适配到另一个接口。

IO中有一个很常见的场景,把字符串转化为字节保存到文件中,用type-c口听歌,很像对吧,这里就用到了适配器模式。

public class Adapter {
    public static void main(String[] args) throws Exception{
        FileOutputStream fileOutputStream=new FileOutputStream("/test");
        OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream);
        outputStreamWriter.write("this is my test");
    }
}

可以看到这里的适配器就是OutputStreamWriter 类,本来源角色 fileOutputStream 是不能直接写入字符串的,通过OutputStreamWriter 实现了这一需求。

public class OutputStreamWriter extends Writer {

    private final StreamEncoder se;
}

这里我们要直接传入字符串进行写文件,所以需要实现writer,而FileOutputStream只实现了OutputStream,这里的OutputStreamWriter 实现了writer,同时,OutputStreamWriter 中通过引用StreamEncoder间接引用了OutputStream,最终实现写字符串。

接着来聊一聊IO中的装饰者模式

public class Decorator {
    public static void main(String[] args) throws  Exception{
        InputStream inputStream=new FileInputStream("/test");
        BufferedInputStream bufferedInputStream=new BufferedInputStream(inputStream);
    }
}
class BufferedInputStream extends FilterInputStream {
}

可以看到BufferedInputStream 其实是 FilterInputStream 的子类,我们知道子类继承并丰富父类的功能,所以这也是我们装饰者模式的设计目的,由装饰器实现者增强装饰角色的功能,这里我们通过BufferedInputStream 给FilterInputStream 增加了功能,使得其读取的数据可以保存在内存中。

总而言之,装饰器和适配器模式看似都是包装一个对象或者类,他们都有一个别名叫包装模式,然而,二者设计目的不一样,适配器是将一个接口转变为另一个接口,装饰器则是丰富原有接口的功能,增强原有对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值