class Person
{
public:
virtual void CreateHead() = 0;
virtual void CreateHand() = 0;
virtual void CreateBody() = 0;
virtual void CreateFoot() = 0;
};
class ThinPerson: public Person
{
public:
virtual void CreateHead()
{
cout << "Create Thin Head" << endl;
}
virtual void CreateHand()
{
cout << "Create Thin Hand" << endl;
}
virtual void CreateBody()
{
cout << "Create Thin Body" << endl;
}
virtual void CreateFoot()
{
cout << "Create Thin Foot" << endl;
}
};
class ThickPerson: public Person
{
public:
virtual void CreateHead()
{
cout << "Create Thick Head" << endl;
}
virtual void CreateHand()
{
cout << "Create Thick Hand" << endl;
}
virtual void CreateBody()
{
cout << "Create Thick Body" << endl;
}
virtual void CreateFoot()
{
cout << "Create Thick Foot" << endl;
}
};
//指挥者类
class Direct
{
private:
Person * p;
public:
Direct(Person * temp){p = temp;}
void Create()
{
p->CreateHead();
p->CreateHand();
p->CreateBody();
p->CreateFoot();
}
};
int _tmain(int argc, char argv[])
{
Person * p = new ThickPerson();
Direct * d = new Direct(p);
d->Create();
delete p;
delete d;
return 0;
}原文:http://blog.csdn.net/lightupheaven/article/details/38842787