zoukankan      html  css  js  c++  java
  • 装饰器模式

    class BufferedReadLineNum1 extends BufferedReader{
    //内部维护的被装饰者类
    BufferedReader bufferedReader;
    int count = 1;
    public BufferedReadLineNum1(BufferedReader read){
    super(read);
    this.bufferedReader = read;
    }
    //开始拓展功能
    public String readLine()throws IOException{
    String content = bufferedReader.readLine();
    if(content == null){
    return null;
    }
    content = count + " " +content;
    count++;
    return content;
    }
    }

    //带分号
    class BufferedReadLineSemi1 extends BufferedReader{
    BufferedReader bufferedReader;
    public BufferedReadLineSemi1(BufferedReader read){
    super(read);
    this.bufferedReader = read;
    }
    //开始拓展功能
    public String readLine()throws IOException{
    String content = bufferedReader.readLine();
    if(content == null){
    return null;
    }
    return content+";";
    }
    }
    //带引号
    class BufferReaderLineMark1 extends BufferedReader{
    //1.内部需要一个被装饰类的应用
    BufferedReader bufferedReader;
    public BufferReaderLineMark1(BufferedReader read){
    super(read);
    this.bufferedReader = read;
    }
    //重写
    public String readLine()throws IOException{
    String content = bufferedReader.readLine();
    if(content == null){
    return null;
    }
    return """+content+""";
    }
    }
    public class Demo2 {


    public static void main(String[] args) throws IOException {

    //1.开启通道
    FileReader reader = new FileReader("C:\zmy\test.txt");
    //2.创建缓冲流
    BufferedReader bufferedReader = new BufferedReader(reader);

    //3.创建带引号
    BufferReaderLineMark1 lineMark1 = new BufferReaderLineMark1(bufferedReader);

    //3.创建带行号
    BufferedReadLineNum1 lineNum1 = new BufferedReadLineNum1(lineMark1);

    //3.创建带分号
    BufferedReadLineSemi1 lineSemi1 = new BufferedReadLineSemi1(lineNum1);

    //3.创建带引号
    //BufferReaderLineMark1 lineMark1 = new BufferReaderLineMark1(lineSemi1);

    //4.读取数据
    String content = null;
    while((content = lineSemi1.readLine()) != null){
    System.out.println(content);
    }

    //关闭
    lineSemi1.close();
    }

    }

  • 相关阅读:
    python学习 day6 (3月7日)
    day05作业---字典
    day04 列表
    python学习 day5 (3月6日)
    python学习 day4 (3月5日)---列表
    Head First JavaScript 第九章:9 异步编码——处理事件
    Head First JavaScript 第八章:8 编写一个应用程序
    Head First JavaScript 第七章:7 类型、相等、转换等系统地讨论类型
    《深入理解C指针》第五章 指针和字符串
    Architecture of a Database System论文——第四章:关系查询处理器
  • 原文地址:https://www.cnblogs.com/future-zmy/p/6144383.html
Copyright © 2011-2022 走看看