#include <iostream>
using namespace std;
/*
装饰模式是为已有功能动态添加更多功能的方法
装饰类和组件类的关系,装饰类为组件类添加功能,组件类
是装饰类的一个成员。这样可以在程序运行时动态的增删功
能,但是每一个装饰类不方便单独调试
使用装饰模式,可以达到串行化处理的效果
*/
class Component {
public:
virtual void Show() =
0;
};
class ConcreteComponent :
public Component {
public:
void Show() {
cout<<
"ConcreteComponent Show"<<
endl;
}
};
class Decorator :
public Component {
protected:
Component*
m_pComponent;
public:
void Show() {
if (m_pComponent !=
NULL) {
m_pComponent->
Show();
}
}
};
class ConcreteDecoratorA :
public Decorator {
public:
void SetComponent(Component*
pComponent) {
m_pComponent =
pComponent;
}
void Show() {
cout<<
"ConcreteDecoratorA Show"<<
endl;
m_pComponent->
Show();
}
};
class ConcreteDecoratorB :
public Decorator {
public:
void SetComponent(Component*
pComponent) {
m_pComponent =
pComponent;
}
void Show() {
cout<<
"ConcreteDecoratorB Show"<<
endl;
m_pComponent->
Show();
}
};
int main()
{
ConcreteComponent c;
ConcreteDecoratorA d1;
ConcreteDecoratorB d2;
d1.SetComponent(&
c);
d2.SetComponent(&
d1);
d2.Show();
return 0;
}
转载于:https://www.cnblogs.com/yanjiu/archive/2012/08/05/2623700.html
相关资源:数据结构—成绩单生成器
转载请注明原文地址: https://win8.8miu.com/read-1542123.html