Java装饰模式

复制代码
package com.czie.d4_decorator_pattern;

/**
 装饰模式

 定义父类:InputStream
 定义实现类:FileInputStream 继续父类 定义功能
 定义装饰实现类:BufferedInputStream 继承父类 定义功能 包装原始类,增强功能。
 */
public class DecoratorPattern {
    public static void main(String[] args)  {
        InputStream is = new BufferedInputStream(new FileInputStream());
        System.out.println(is.read());
        System.out.println(is.read(new byte[3]));
    }
}
复制代码
复制代码
package com.czie.d4_decorator_pattern;


/**
 装饰类:继承InputStream 拓展原始类的功能
 */
public class BufferedInputStream extends InputStream {
    private InputStream is;
    public BufferedInputStream(InputStream is){
        this.is=is;
    }

    @Override
    public int read() {
        System.out.println("提供8KB的缓冲区,提高读数据性能~~~~");
        return is.read();
    }

    @Override
    public int read(byte[] buffer) {
        System.out.println("提供8KB的缓冲区,提高读数据性能~~~~");
        return is.read(buffer);
    }

}
复制代码
复制代码
package com.czie.d4_decorator_pattern;


/**
 共同父类
 */
public abstract class InputStream{
    public abstract int read() ;
    public abstract int read(byte[] buffer) ;
}
复制代码
复制代码
package com.czie.d4_decorator_pattern;


import java.util.Arrays;

/**
 原始类
 */
public class FileInputStream extends InputStream {

    @Override
    public int read() {
        System.out.println("低性能的方式读取了一个字节a");
        return 97;
    }

    @Override
    public int read(byte[] buffer) {
        buffer[0] = 97;
        buffer[1] = 98;
        buffer[2] = 99;
        System.out.println("低性能的方式读取了一个字节数组:" + Arrays.toString(buffer));
        return 3;
    }
}
复制代码

 

posted @   刘品水  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示