• 大话设计模式读书笔记--3.装饰模式


    定义

    动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活

    继承添加新功能:使用继承是静态的,在编译的时候就已经决定了子类的行为,我们不便于控制增加行为的方式和时机。
    关联添加新功能:B对象引用A对象,由B对象决定是否来扩展A对象的行为

    关联不会破坏类的封装性,可以为类动态添加职责 

    模式结构

    Component: 定义一个对象接口,可以给这些对象动态的添加职责

    ConcreteComponent: 定义一个具体的对象,也可以给这个对象添加职责

    Decorate:装饰抽象类, 从外类扩展Component的功能,但对于Component来说,是无需知道Decorate的存在

    ConcreteDecorateA: 具体的装饰对象,起到给Component添加职责

    模式实现

    场景: 一个人穿衣服, 要求穿鞋子,带帽子

    场景分析:可以先穿鞋子后带帽子, 也可以先带帽子后穿鞋子,顺序是可以变的 

    实现效果 : 在运行时,不用修改给定对象的结构就可以在外部增加附加的功能

    下载代码, 解压后目录下图:

    优缺点

    优点:

    在不改变原有代码的情况下,把类的核心功能和装饰功能区分开了,并能动态扩展一个对象的新功能

    缺点:

    对于多次装饰的对象,调试时寻找错误可能需要逐级排查,较为烦琐。

    使用场景

    当某个对象的职责经常发生变化或者需要动态的增加职责

  • 相关阅读:
    C++怎么实现线程安全
    Linux内核之进程地址空间
    Linux内核之内存管理
    内存管理之内存寻址
    Linux内核初探
    进程间通信
    下拉列表控件实例 ComboBoxControl
    数据表格控件 DataGridControl
    8 种百度云高速下载,你值得拥有
    10 快好用的下载工具,终于和迅雷说拜拜了
  • 原文地址:https://www.cnblogs.com/liuconglin/p/6399702.html
Copyright © 2020-2023  润新知