定义:
将一个复杂对象的构建与表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)
//抽象类
class House{
public:
House(){}//构造函数调用虚函数是静态绑定的
};
/*构造器*/
class HouseBuilder()
{
public:
House* GetResult()
{return p;}
virtual ~HouseBuilder()
protected:
House* p;
virtual void part1()=0;
virtual void part2()=0;
virtual bool part3()=0;
virtual void part4()=0;
virtual void part5()=0;
}
/*导向器*/
class HouseDirector{
public:
HouseBuilder *pB;
HouseDirector(HouseBuilder *pb)
{this->pB=pb;}//构造函数
House* Constructor(){
pB->part1();
for(int i=0;i<4;i++)
{
pB->part2();
}
bool flag=p->part3();
if(flag)
pB->part4();
else
pB->part5();
return pB->GetResult();
}
}
//具体房子建造实现类
class StoneHouseBuilder():public HouseBuilder{
protected:
virtual void part1(){};
virtual void part2(){};
virtual bool part3(){};
virtual void part4(){};
virtual void part5(){};
};
//具体房子实现类
class StoneHouse():public House{
};
int main()
{
HouseDirector hd(new StoneHouseBuilder());
House* stoneHouse=hd.Constructor();
}