创建型设计模式共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
建造者模式:适用于复杂对象的构建,可以将其一步一步的构造出来,能够更精细的控制构建过程(每一步都可以控制)。

从上述UML图可以看出,抽象Builder聚合在Direactor类中,通过多态将RealBuilderA或RealBuilderB赋值给Builder。其中,RealBuilderA和RealBuilderB中构建对象的实现方法不同。
//建造者模式示例代码
#include<iostream>
using namespace std;
class Builder
{
public:
virtual void buildHead() = 0;
virtual void buildBody() = 0;
virtual void buildArm() = 0;
virtual void buildLeg() = 0;
};
class ThinBuilder :public Builder
{
public:
void buildHead()
{
cout << "Build Thin Head!" << endl;
}
void buildBody()
{
cout << "Build Thin Body!" << endl;
}
void buildArm()
{
cout << "Build Thin Arms!" << endl;
}
void buildLeg()
{
cout << "Build Thin Legs!" << endl;
}
};
class FatBuilder :public Builder
{
public:
void buildHead()
{
cout << "Build Fat Head!" << endl;
}
void buildBody()
{
cout << "Build Fat Body!" << endl;
}
void buildArm()
{
cout << "Build Fat Arms!" << endl;
}
void buildLeg()
{
cout << "Build Fat Legs!" << endl;
}
};
class Director
{
Builder *pBuilder;
public:
Director(Builder *iBuilder)
{
pBuilder = iBuilder;
}
void Create()
{
pBuilder->buildHead();
pBuilder->buildBody();
pBuilder->buildArm();
pBuilder->buildLeg();
}
};
//客户端调用
int main()
{
cout << "Builder DP Test!" << endl;
Builder *pBuilderInstance = new FatBuilder();
Director dir(pBuilderInstance);
dir.Create();
system("pause");
return 0;
}
