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

设计模式之装饰模式

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

设计模式之装饰模式

装饰模式适合于之前定义的某个类不够好用或者功能需要扩展,现在用一个新类继承,重写其方法。

代码演示(模拟java jdk中的FileInputStream和BufferedInputStream)

抽象类

package com.wmx.zhuangshi;

public abstract class InputStream {
    public abstract int read();

    public abstract int read(byte[] buf);
}

子类

package com.wmx.zhuangshi;

public class FileInputStream extends InputStream {

    @Override
    public int read() {
        System.out.println("低性能的进行读取");
        return 95;
    }

    @Override
    public int read(byte[] buf) {
        System.out.println("低性能的进行读取");
        buf[0] = 95;
        buf[1] = 96;
        buf[2] = 97;
        return 3;
    }
}

装饰类

package com.wmx.zhuangshi;

public class BufferedInputStream extends FileInputStream {
    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[] buf) {
        System.out.println("缓冲8KB字节进行高效读取");
        return is.read(buf);
    }
}

测试类

package com.wmx.zhuangshi;

public class Test {

    public static void main(String[] args) {
        BufferedInputStream bi = new BufferedInputStream(new FileInputStream());
        bi.read();
    }

}

至此,装饰模式讲解完毕,有疑问的可以下方留言,相互学习,我是心哥说编程,致力于成为一个编程大牛编程爱好者。

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

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

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