栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

IO流/包装类的实现原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

IO流/包装类的实现原理

IO流/包装类的实现原理

​

首先,下方是IO的关系图

处理流(包装流)是对结点流进行的功能扩展和延伸,用到了修饰器设计模式,下面介绍一下其实现原理和方法


首先先创建如下几个类

Reader_代表抽象父类方法

package 流.包装类设计理念;

public abstract class Reader_ {//只要实现了Reader_,在处理流中就可以被传入
    //抽象类中要实现的方法
    public void readFile(){}
    public void readString(){}
}

FileReader_、StringReader_代表处理流,处理文件和字符串

FileReader类:实现输出readFile功能

public class FileReader_ extends Reader_{
    //模拟节点流,父类方法在此进行实现
    public void readFile(){
        System.out.println("对文件内容进行读取");
    }
}

StringReader类:

public class StringReader extends Reader_{
    //模拟节点流,父类方法在此进行实现
    public void readString(){
        System.out.println("对字符串进行读取");
    }
}

BufferReader_代表处理流

public class BufferReader_ extends Reader_{//包装类中定义private变量Reader_ reader_,实现调用
    private Reader_ reader_;
    //包装类中实现传入相关结点流
    public BufferReader_(Reader_ reader_) {//传入的为Reader_或Reader_的子类都可
        this.reader_ = reader_;
    }
    //以上部分即可对不同的流都进行接受并处理

    //还可以对相应的方法进行封装扩展
    public void readFile(){//封装
        reader_.readFile();
    }
    //例如将readFile方法变为读取多个文件
    public void readFiles(int FileNum){//扩展
        for (int i = 0; i < FileNum; i++) {
            reader_.readFile();
        }
    }
}

创建Test类进行测试
public class Test {
    public static void main(String[] args) {
        BufferReader_ bufferReader_=new BufferReader_(new FileReader_());//在BufferReader_中传入了FileReader_这一子类

        bufferReader_.readFile();//调用BufferReader_中传入的readFile方法
        //输出结果为:	对文件内容进行读取
        
        bufferReader_.readFiles(5);
        //输出结果为:	对文件内容进行读取*5(次)
    }
}

综上处理流是对结点流进行的封装和重写调用,此方法为修饰器设计模式,可以在原有类的基础上创建一个新类,实现更加强大的功能。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913856.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号