#include <iostream>
using namespace std;
class PersonBuilder
{
public:
virtual void BuildHead()=0;
virtual void BuildBody()=0;
virtual void BuildArmLeft()=0;
virtual void BuildArmRight()=0;
virtual void BuildLegLeft()=0;
virtual void BuildLegRight()=0;
};
class PersonThinBuilder:public PersonBuilder
{
public:
virtual void BuildHead()
{
cout<<"Draw head"<<endl;
}
virtual void BuildBody()
{
cout<<"Draw Body"<<endl;
}
virtual void BuildArmLeft()
{
cout<<"Draw leftarm"<<endl;
}
virtual void BuildArmRight()
{
cout<<"Draw rightram"<<endl;
}
virtual void BuildLegLeft()
{
cout<<"Draw leftleg"<<endl;
}
virtual void BuildLegRight()
{
cout<<"Draw rightleg"<<endl;
}
};
class PersonFatBuilder:public PersonBuilder
{
public:
virtual void BuildHead()
{
cout<<"Draw head"<<endl;
}
virtual void BuildBody()
{
cout<<"Draw Body"<<endl;
}
virtual void BuildArmLeft()
{
cout<<"Draw leftarm"<<endl;
}
virtual void BuildArmRight()
{
cout<<"Draw rightram"<<endl;
}
virtual void BuildLegLeft()
{
cout<<"Draw leftleg"<<endl;
}
virtual void BuildLegRight()
{
cout<<"Draw rightleg"<<endl;
}
};
class PersonDirector
{
private:
PersonBuilder* pb;
public:
PersonDirector(PersonBuilder* pb)
{
this->pb = pb;
}
void CreatePerson()
{
pb->BuildHead();
pb->BuildBody();
pb->BuildArmLeft();
pb->BuildArmRight();
pb->BuildLegLeft();
pb->BuildLegRight();
}
};
int main()
{
cout<<"------Draw a ThinPerson------"<<endl;
PersonThinBuilder* ptb = new PersonThinBuilder();
PersonDirector* pdthin = new PersonDirector(ptb);
pdthin->CreatePerson();
cout<<"-------Draw a FatPerson------"<<endl;
PersonFatBuilder* pfb = new PersonFatBuilder();
PersonDirector* pdfat = new PersonDirector(pfb);
pdfat->CreatePerson();
system("pause");
return 0;
}
设计模式——建造者模式(C++)——建造小人
最新推荐文章于 2024-01-09 11:01:32 发布