资讯详情

节点流和处理流(1)

基本介绍

  1. 节点流可以从自特定的数据源,如FileReader、FileWriter
  2. 处理流(也叫))在现有流(节点流或处理流)上连接,为程序提供更强大的读写功能,如BufferedReader、BufferedWriter 在这里插入图片描述
区别与联系
  1. 节点流是与数据源直接连接的底层流/低级流
  2. 处理流(包装流)包装节点流不仅可以消除不同节点流的差异,还可以提供更方便的输入输出方法
  3. 处理流(也称为包装流)包装节点流,采用装饰设计模式,不直接连接到数据源模拟装饰设计模式

  1. 提高性能:只要通过增加缓冲来提高输入输出的效率
  2. 操作方便:处理流可以提供一系列方便的方法一次输入输出大量数据,使用更加灵活方便

例子解释:Read.java它是抽象的,有两种方法,一种是读取文件readFile(),读取字符串readString(),分别通过FileRead.java和StringRead.java这两个相当于实现,现进行,通过BufferRead.java继承Read.java,在BufferRead.java有一个属性read_,在BufferRead.java原来的方法可以包装或扩展功能。其优点是,在实现过程中,只需将要实现的子类传输到包装流中,就可以调用相应的方法,无需直接处理数据源,使用方便。(工人与外包公司的关系,甲方(主类)找外包公司(包装流),外包公司接手工作,让工人(节点流)实现)

Read.java抽象类

package com.zj;  public abstract class  Read { 
             public void readFile(){ 
        }     public void readString(){ 
        }     //也可以用一种方法来管理,比如readMeathod()实现所有读取操作的方法,以后调用对象动态绑定机制绑定到相应的实现子类     //public abstract void readMeathod(); } 

FileRead.java实现readFile()(节点流)

package com.zj;  public class FileRead extends Read { 
             public void readFile(){ 
                 System.out.println("读取文件。");     } } 

StringRead.java实现readString()(节点流)

package com.zj;  public class StringRead extends Read{ 
             public void readString(){ 
                 System.out.println("读取字符串。。。");
    }
}

通过BufferRead.java包装(包装流/处理流)

package com.zj;

public class BufferRead extends Read{ 
        
    private Read read_;

    //接收Read的子类
    public BufferRead(Read read_) { 
        
        this.read_ = read_;
    }
    public void readFile(){ 
        //封装一层
        read_.readFile();
    }
    //让方法更加灵活,多次读取文件
    public void readFiles(int num){ 
        
        for (int i=0;i<num;i++){ 
        
            read_.readFile();
        }
    }
    //扩展readString,批量处理字符串数据
    public void readStrings(int num){ 
        
        for (int i = 0; i< num; i++){ 
        
            read_.readString();
        }
    }
}

Test_.java方法调用

package com.zj;

public class Test_ { 
        
    public static void main(String[] args) { 
        
        BufferRead bufferRead1 = new BufferRead(new FileRead());//传入Read的子类FileRead
        bufferRead1.readFile();
        bufferRead1.readFiles(4);

        BufferRead bufferRead2 = new BufferRead(new StringRead());//传入Read的子类StringRead
        bufferRead2.readStrings(5);


    }
}

结果:

标签: kk系列连接器1832zj连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台