设计模式-结构-Decorator(装饰)模式
1.在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
2.在已知的类添加功能,如果继承来实现 那么增加了系统的复杂性和继承深度
通过组合而不是继承 来达到目的
代码大全中有这样一个场景,一个功能很复杂 齐全的类,但是我只想要部分接口,和部分功能,那么可以通过装饰着模式 包装出一个新类
class Component { public: virtual void Operation() = 0; }; class ConCreateComponent :public Component { public: virtual void Operation()override { } }; class Decorator :public Component { public: virtual void Operation()override { } }; class ConCreateDecorator :public Decorator { public: virtual void Operation()override { _component->Operation(); this->AddedBehavior(); } void AddedBehavior() { cout << __FUNCTION__ << endl; } ConCreateDecorator(Component*com) { this->_component = com; } private: Component* _component; }; int main(int argc, char *argv[]) { Decorator* dec = new ConCreateDecorator(new ConCreateComponent); dec->Operation(); system("pause"); return 0; }