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服务注册到nacos
    springboot设置响应状态码
    nio 实现群聊小系统
    记一次maven问题(把maven仓库打包后在离线环境另一个机器导入不成功)
    客户端查看sql的执行时间
    java 运行python脚本
    http访问支持websocket
    ”真实项目“ 与“作业”
    工厂方法模式
    idea 开发 SSM jar包找不到
  • 原文地址:https://www.cnblogs.com/future-zmy/p/6144383.html
Copyright © 2011-2022 走看看