// Component 类 class Component { public: virtual void Operation() = NULL; }; // ConcreteComponent 类 class ConcreteComponent : public Component { public: void Operation() { // 具体的对象操作 } }; // Decorator 类 class Decorator : public Component { protected: Component* component; // 需初始化为NULL public: void SetComponent(Component* component) { this->component = component; } void Operation() { if( component != NULL ) { component.Operation(); } } }; // ConcreteDecoratorA class ConcreteDecoratorA : public Decorator { private: std::string addedState; // 任意结构数据 public: void Operation() { Decorator::Operation(); addedState = "New State"; // TO-DO: Add your extra code } }; // ConcreteDecoratorB class ConcreteDecoratorB : public Decorator { public: void Operation() { Decorator::Operation(); AddedBehavior(); // TO-DO: Add your extra code } private: void AddedBehavior() { // TO-DO: Add your extra code } }; // Main int main() { ... ConcreteComponent* c = new ConcreteComponent(); ConcreteDecoratorA* d1 = new ConcreteDecoratorA(); ConcreteDecoratorB* d2 = new ConcreteDecoratorB(); d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); ... }