应用场景:
动态地给一个对象添加一些额外的职责
代码实现:
#include<iostream>
using namespace std;
#include <string>
class Person
{
private:
string szName;
public:
Person() {}
Person(string name)
{
szName = name;
}
public:
virtual void Display()
{
cout << "i am " << szName << endl;
}
};
class finary :public Person
{
protected:
Person *peroson;
virtual void DecoratePerson(Person *peroson)
{
this->peroson = peroson;
}
virtual void Display()
{
cout << "finary" << endl;
peroson->Display();
}
};
class shirt :public finary
{
public:
virtual void DecoratePerson(Person *peroson)
{
this->peroson = peroson;
}
virtual void Display()
{
cout << "shirt" << endl;
peroson->Display();
}
};
class socket :public finary
{
public:
virtual void DecoratePerson(Person *peroson)
{
this->peroson = peroson;
}
virtual void Display()
{
cout << "socket" << endl;
peroson->Display();
}
};
int main()
{
Person* p = new Person("小李");
shirt* sh = new shirt;
socket* s = new socket;
sh->DecoratePerson(p);
s->DecoratePerson(sh);
s->Display();
delete s;
delete sh;
delete p;
return 0;
}