设计模式-结构-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;
}