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

设计模式—装饰模式

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

设计模式—装饰模式

什么是装饰设计模式?

  1. 创建一个新类,包装原始类,从而在新类中提升原来类的功能。

装饰设计模式的作用:

  1. 装饰模式指的是在不改变原类的基础上, 动态地扩展一个类的功能。

总结:个人认为装饰模式就是对对象的一层封装,对于一些性能比较差的对象,可以对其进行封装,在封装类中通过一些方法提高其性能。

测试案例:

我们使用字符输入缓冲流可以加快文件读取的速度,其原理就是装饰模式,BufferedInputStream内部嵌套FileInputStream,并声明一个8KB的缓冲池,提高性能。想要具体了解字符缓冲输入流可以参考文章:https://blog.csdn.net/qq_43751200/article/details/124558433

下面模拟实现过程:

InputStream(抽象父类)
FileInputStream(实现子类,读写性能较差)
BufferedInputStream(实现子类,装饰类,读写性能高)~~删除线格式~~ 

创建InputStream抽象类:

// 装饰模式指的是在不改变原类的基础上, 动态地扩展一个类的功能。
public abstract class InputStream {
    public abstract int read();
    public abstract int read(byte[] buffer);
}

创建FileInputStream继承InputStream抽象类:

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;
    }
}

创建BufferedInputStream继承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);
    }
}

测试类DecoratorPattren:

// 装饰模式指的是在不改变原类的基础上, 动态地扩展一个类的功能。
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]));
    }
}

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

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

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