• 设计模式之装饰器模式


    装饰器模式,顾名思义,就是将某个类重新装扮一下,使得它比原来的功能更加强大,这就是装饰器所要达到的目的。但是作为原来这个类的使用者,不应感受到装饰前和装饰后有什么不同,否则就破坏了原有类的结构了,所以装饰器模式要做到对被装饰类的使用者透明,这是对装饰器模式最基本的要求。

    装饰器模式的结构

    下图是一个装饰器模式的典型的类图结构,各个角色的描述如下:

    • Component:抽象组件角色,定义一组抽象的接口,规定被装饰组件有哪些功能
    • ConcreteComponent:实现这个抽象组件的所有功能
    • Decorator:装饰器角色,它持有Component角色的引用,定义一个和抽象组件一致的接口-
    • ConcreteDecorator:装饰器的具体实现,负责实现装饰器角色定义的功能

    Java IO中的装饰器模式

    装饰器模式的作用就是赋予被装饰器的类更多的功能,在Java IO类库中,有很多不同的功能组合情况,这些不同的功能组合就是使用装饰器模式实现的,下面以FilterInputStream为例来说明。

    InputStream类就是以抽象组件的角色存在的,而FileInputStream就是具体实现抽象组件所有功能的组件,FilterInputStream是装饰器角色,他实现了InputStream的所有接口,并且持有InputStream对象的引用,BufferedInputStream就是具体装饰器的实现者,它给InputStream添加了附加功能,使得InputStream读取的数据放在内存中,提升读取效率。

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

    装饰器模式和适配器模式都有一个别名就是包装模式(wrapper),它们都起到了包装一个类或则对象的作用,但是它们的使用目的不同,装饰器模式不改变被包装的接口,仅仅是争强原来接口的功能,而适配器模式要将一个接口转变为另一个接口,目的是通过改变接口达到重复使用。

  • 相关阅读:
    单片机开发 郭天祥
    OpenNI检测不到Kinect Camera和Kinect Audio了
    python中的类的成员变量以及property函数
    python lambda
    python中的括号以及元组和列表的区别
    python的self
    python exception的传递
    python的闭包
    函数里面定义函数
    在yum出问题的情况下安装某个rpm包的方法
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8256948.html
Copyright © 2020-2023  润新知