装饰者模式:
动态的给一个对象添加一些额外的职责(不重要的,偶然执行一次的),就增加功能来说,装饰模式比生成子类更灵活,对象无需知道外围的这个装饰类的存在。
#include "stdafx.h"
#include <iostream>
using namespace std;
class component
{
public:
component() {}
virtual ~component() {}
virtual void show() = 0;
};
class person : public component
{
public:
person() {}
virtual ~person() {}
virtual void show()
{
cout<<"人物"<<endl;
}
};
class decorator : public component
{
public:
decorator() {}
virtual ~decorator() {}
void decorate(component* p)
{
m_pcomponent = p;
}
protected:
component* m_pcomponent;
};
class trousers : public decorator
{
public:
trousers() {}
virtual ~trousers() {}
virtual void show()
{
cout<<"穿裤子的";
m_pcomponent->show();
}
};
int _tmain(int argc, _TCHAR* argv[])
{
person p;
p.show();
trousers t;
t.decorate(&p);
t.show();
system("pause");
return 0;
}