• 设计模式之装饰器设计模式


    Java的IO流使用了一种装饰器设计模式。它将IO流分成底层节点流和上层处理流,其中节点流用于和底层的物流存储结点直接关联——不同的物流节点获取该结点流的方式可能存在一定差异,但程序可以把不同的物理节点流包装成统一的处理流,总而允许程序使用统一的输入、输出代码来读取不同的物流存储结点的资源。

    简单来说,装饰器模式就是将某个类重新装扮一下,使它比原来更漂亮或功能更强大,但是这个类袁蓓的使用者不会感受到装饰前和装饰后的区别,所以装饰器模式要做到对装饰类的使用者透明。

    在由InputStream、OutputStream、Reader和Writer代表的等级结构内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的、具有改善了的功能的流处理器。

    装饰器模式的结构:

    Component:抽象组件角色,定义一组抽象接口,规定这个被装饰组件有哪些功能。

    ConcreteComponent:实现这个抽象组件所有的功能。

    Decorator:装饰器角色,它持有一个Component对象实例的引用,定义一个抽象组件一致的接口。

    ConcreteDecorator:具体的装饰器是闲着,负责实现装饰器角色定义的功能。

    Java IO中的装饰器模式

    FilterInputStream的类结构图: 

    InputStream类就是以抽象组件存在的;而就是具体组件,他实现了抽象组件的所有接口;FilterInputStream类就是装饰角色,他实现了InputStream类的所有接口,并且持有InputStream的对象实例的引用;BufferedInputStream就是具体的装饰器实现者,他给InputStream类附加了功能,这个装饰器类的作用就是是的InputStream读取的数据保存在内存中,而提高读取的性能。

    适配器模式和装饰器模式区别:

    装饰器模式和适配器模式都有一个别名就是包装模式,他们都是起到包装一个类或对象的作用。但是他们的目的不同,适配器模式的意义试讲一个接口转变成另一个接口,他的目的之通过改变接口来达到重复使用的目的;而装饰器模式则是要保留原有的接口,但是增强原有对象的功能,或者改变原有对象的处理方法而提升性能。

  • 相关阅读:
    weekly review 200819: Burn the midnight oil
    如何进行Android单元测试
    Android开发教程
    使用SQLite方式存储数据
    图像的平移、旋转及缩放
    JSON数据解析
    Android 多线程下载网络文件
    10套华丽的 Windows 8 Metro 风格图标【2000+免费图标】
    学习新技术的 10 个建议
    BugFree快速使用入门
  • 原文地址:https://www.cnblogs.com/jiangwz/p/9088082.html
Copyright © 2020-2023  润新知