java io流中涉及的设计模式

java io流中涉及的设计模式


介绍

先看一段代码,查看其中涉及到的模式

public void testInputStreamReader() throws Exception {
    private static final String SEPARATOR = File.separator;

    File file = new File("e:" + SEPARATOR + "io" + SEPARATOR + "test.txt");
    //BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    // 备注上面这个初始化过程就是多次使用包装来完成的,不推荐这么写,会让新手看不懂。

    //1、获得子节输入流
    FileInputStream fileInputStream=new FileInputStream(file);
    //2、构造转换流(是继承Reader的)
    InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream);
    //3、 构造缓冲字符流
    BufferedReader bufferedReader=new BufferedReader(inputStreamReader);


    //备注1、2两步骤体现出了适配器模式
    //2步骤体现了InputStreamReader类具有将子节输入流转换为字符输入流的功能
    //2、3两步骤体现了装饰模式(wrapper包装模式)

}

io中的适配器模式

由于InputStream是字节流不能享受到字符流读取字符那么便捷的功能,因此借助
InputStreamReader将其转为Reader子类,因此可以拥有便捷操作文本文件方法。
OutputStream同理。

适配器模式

//TODO

io中的装饰(包装)模式

将InputStream字节流包装为BufferedReader过程就装饰的过程。一开始
InputStream只有read一个字节的方法,包装为Reader之后拥有read一个字符的功
能,在包装成BufferedReader之后就拥有read一行字符串功能。OutputStream同理

装饰模式

//TODO

总结

java io流操作对于新手来说可能看到有那么多接口、抽象类、和类可能会不知道从何下
手,我个人的见解是理解好面向对象(对IO流接口、类的层次结构理清楚)、弄清楚源和
目标(输入和输出方向)、以及装饰和适配器模式那么掌握好io流操作并不会很难。相比
于并发而言io算容易的哈。

你可能感兴趣的:(IO&NIO)