美文网首页
结构型模式4-装饰模式

结构型模式4-装饰模式

作者: sunblog | 来源:发表于2018-04-16 23:07 被阅读0次

结构型模式4-装饰模式

装饰模式Decorator

意图

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

问题思考

比如,我们想给image上盖一层半透明的背景,再在中央添加几个文字。我们可以这样子类化image,TransparentImage, TextTransparentImage。但如果我们又需要另外一种组合呢:image中央添加几个文字,再盖上一层半透明背景。我们可以也可以之内化,TextImage,TransparentTextImage。这造成了大量的重复。因为就功能来说,这两种功能完全一致,只是顺序不同。

适用性

  • 在不影响其他对象的情况下, 以动态、透明的方式给单个对象添加职责。
  • 处理那些可以撤销的职责
  • 当生成子类不合适的时候。比如:为支持所有的可能,子类的数目可能暴增。

注意事项

  • 我们可以递归地为对象添加多个Decorator

类图

decorator

实现


class Component {
public:
    virtual void Operation() = 0;
};


class Decorator : public Component {
public:
    explicit Decorator(Component *c) { mComponent = c; }

    void Operation() override {
        mComponent->Operation();
    }

private:
    Component *mComponent = nullptr;
};


class ConcreteComponent : public Component {
public:
    void Operation() override {
        // some code
    }
};

class ConcreteDecoratorA : public Decorator {
public:
    explicit ConcreteDecoratorA(Component *c) : Decorator(c) {}

    void AddedBehavior() {
        // some code
    }

    void Operation() override {
        AddedBehavior();
        Decorator::Operation();
    }

};

相关文章

  • 结构型模式4-装饰模式

    结构型模式4-装饰模式 装饰模式Decorator 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,De...

  • 23种设计模式

    创建型 工厂模式 ( 工厂方法模式, 抽象工厂模式, 建造者模式 ) 单例模式 原型模式 结构型 适配器模式 装饰...

  • 设计模式分类汇总

    结构型 适配器模式 组合模式 桥接模式 代理模式 装饰者模式 门面模式 享元模式 行为型 责任链模式 命令模式 解...

  • 设计模式(1)工厂模式

    设计模式有 23 种,按大类分的化可以分为三类 创建型(如:工厂模式、单例模式、原型模式等) 结构模式型(如:装饰...

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

  • 结构型模式:装饰模式

    文章首发:结构型模式:装饰模式 七大结构型模式之四:装饰模式。 简介 姓名 :装饰模式 英文名 :Decorato...

  • 常用的设计模式

    设计模式主要大概分成三类: 1.创建型:单例设计模式、抽象工厂设计模式 2.结构型:MVC 模式、装饰器模式、适配...

  • java23种设计模式

    创建型 抽象工厂模式工厂方法建造者模式原型模式单态模式 结构型 适配器模式桥接模式组合模式外观模式装饰者模式享元模...

  • iOS常用设计模式总结(一)

    设计模式大概分成三类: 1.创建型:单例设计模式、抽象工厂设计模式 2.结构型:MVC 模式、装饰器模式、适配器模...

  • 装饰模式

    个人博客http://www.milovetingting.cn 装饰模式 模式介绍 装饰模式也称为包装模式,结构...

网友评论

      本文标题:结构型模式4-装饰模式

      本文链接:https://www.haomeiwen.com/subject/txpykftx.html