一、原理讲解
1.1意图
装饰模式目的是:动态地给一个对象添加一些额外的职责,比生成子类更灵活。
1.2常用场景
一般用于给某个对象添加某个功能,但是又不希望更改该对象底层抽象借口,同时该功能可以动态增删,这时可以考虑用装饰者模式。
1.3结构图(UML图)

1.4实现方法
如图1所示,装饰着Decorator通过继承抽象基类Component,又组合一个Component指针*component,通过重写从Component继承而来的虚函数operation(),在里面用指针调用operation()函数,即component->operation(),通过运行时绑定,由编译器决定调用的是ConcreteComponent的operation函数。
这样就实现了在装饰者Decorator对象里调用兄弟类的方法,主要原理是依赖C++的多态特性,运行时确定基类指针指向的函数。
二、代码实现
2.1代码实现思路
a1 定义抽象基类Component和一个接口虚函数operation();
a2 具体类ConcreteComponent继承Component,实现接口函数opera