#include <iostream>
#include <string>
using namespace std;
class Component
{
public:
virtual void Operation(){}
};
class ConCreateDecoratorA : public Component
{
private:
Component* m_pComponent;
void DASpecialDecortor()
{
cout<<"this is decoratrorA"<<endl;
}
public:
ConCreateDecoratorA(Component* pComponent)
{
m_pComponent=pComponent;
}
void Operation()
{
m_pComponent->Operation();
DASpecialDecortor();
}
};
class ConCreateDecoratorB: public Component
{
private:
Component* m_pComponent;
void DBSpecialDecortor()
{
cout<<"this is decoratrorB"<<endl;
}
public:
ConCreateDecoratorB(Component* pComponent)
{
m_pComponent=pComponent;
}
void Operation()
{
m_pComponent->Operation();
DBSpecialDecortor();
}
};
void main()
{
Component* p=new Component;
ConCreateDecoratorA* pDa=new ConCreateDecoratorA(p);
ConCreateDecoratorB* pDb=new ConCreateDecoratorB(pDa);
pDb->Operation();
}
C++-装饰模式
最新推荐文章于 2025-05-28 13:36:26 发布