装饰者模式

Posted mathyk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰者模式相关的知识,希望对你有一定的参考价值。

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

技术分享图片

 

/*装饰者模式*/
class Car
{
public:
    virtual void show() = 0;
};

class RunCar : public Car
{
public:
    virtual void show()
    {
        cout<<"可以跑"<<endl;
    }
};

class SwimCarDirector : public Car
{
public:
    SwimCarDirector(Car *car)
    {
        m_car = car;
    }

    void swim()
    {
        cout<<"可以游泳"<<endl;
    }

    virtual void show()
    {
        m_car->show();
        swim();
    }
private:
    Car *m_car;
};


class FlyCarDirector : public Car
{
public:
    FlyCarDirector(Car *car)
    {
        m_car = car;
    }
    void fly()
    {
        cout<<"可以飞"<<endl;
    }
    virtual void show()
    {
        m_car->show();
        fly();
    }
private:
    Car *m_car;
};

 

以上是关于装饰者模式的主要内容,如果未能解决你的问题,请参考以下文章

Java设计模式之装饰者模式

设计模式整理_装饰者模式

设计模式-装饰者模式(Go语言描述)

设计模式-装饰者模式(Go语言描述)

装饰者模式

设计模式 之 装饰者模式