• 设计模式学习每日一记(9.装饰者模式)


    装饰者模式

    A.定义:

    动态地给一个对象添加一些职责。就增加功能而言,装饰者模式比生成子类更灵活。

    B.定义分析:

    "动态地给一个对象添加一些职责。就增加功能而言,装饰者模式比生成子类更灵活。"我们知道,对象的职责定义在类中,类的方法决定了对象的职责.

    "动态地给一个对象添加一些职责。就增加功能而言,装饰者模式比生成子类更灵活。"装饰者模式的意图是不修改类,而是动态给对象添加职责.

    "动态地给一个对象添加一些职责就增加功能而言,装饰者模式比生成子类更灵活。"装饰者不修改类,而是动态给对象加,当然灵活.

    C.问题:

    (1)怎么实现?

    假设有类A和SubA,SubA继承自A.A有个接口dress表示穿衣服.

     1 class A
    2 {
    3 virtual void dress(void) = 0;
    4 };
    5 class SubA : public A
    6 {
    7 void dress(void)
    8 {
    9 //穿T恤.
    10 }
    11 };

    但是,我们突然间想要扩展下dress这个接口,但是有不想改变A和SubA。这时候,我们使用装饰模式:

    class DecoratorHat : public A
    {
    A* m_p;
    DecoratorHat(A* p)
    :A()
    {
    m_p = p;
    }
    void dress(void)
    {
      //戴帽子
      m_p->dress();
    }
    };
    class DecoratorGlass : public A
    {
    A* m_p;
    DecoratorGlass(A* p)
    :A()
    {
    m_p = p;
    }
    void dress(void)
    {
      //戴眼镜
      m_p->dress();
    }
    };

    其中的DecoratorHat和DecoratorGlass就是装饰者,用法可以是:

    A* p = NULL;
    p = new DecoratorHat(new DecoratorGlass(new SubA));
    p->dress();

    这时候,SubA就被装饰咯.

  • 相关阅读:
    Add a column in table control
    ALV
    ABAP Object Differences
    Field Symbols, Casting Decimal Places
    fROM PPV report
    python全局变量
    管理商品demo
    Mac系统在Pycharm中切换解释器
    python中 元组
    python中字符串格式化
  • 原文地址:https://www.cnblogs.com/linucos/p/2227975.html
Copyright © 2020-2023  润新知