java 装饰模式(Decorator or Wrapper)

  • 介绍:装饰模式的作用就是动态的给类添加额外的功能,java IO 的设计就是运用了该设计模式(InputStream有很多装饰子类) 。

  • 通用类图
    这里写图片描述

    • Component:就是原始的待装饰的类
    • ConcreteComponent: 具体的实现类
    • Decorator : 装饰类接口并且包含
    • ConcreteDecoratorA 装饰A类
  • 实例(java.io.InputStream)最好的例子

    • 类图
      这里写图片描述
    • Component : InputStream
    • ConcreteComponent : ByteArrayInputStream,FileInputStream
    • Decorator : FilterInputStream
    • ConcreteDecorator

      • BufferInputStream:用来从硬盘将数据读入到一个内存缓冲区中,并从此缓冲区提供数据。
      • DateInputStream:提供基于多字节的读取方法,可以读取原始数据类型的数据。
      • LineNumberInputStream:提供带有行计算功能的过滤输入流。
      • PushbackInputStream: 提供特殊的功能,可以将已读取的直接“推回”输入流中。
      • 实际使用

        public static void main(String[] args) throws FileNotFoundException {
            InputStream a = new FileInputStream("") ;//要装饰FileInputStream
            a = new DataInputStream(a);//添加DataInputStream可以读取原始数据类型的数据。
            a = new BufferedInputStream(a);//添加缓冲
        }
  • 使用场景 (参考设计模式之禅)

    • 当一个类我们需要给他动态的添加功能的时候。
    • 动态的给对象增加功能且这些功能可以再动态的撤销
    • 需要为一批兄弟改装或者加装功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值