使用场景:当需要创建的实例非常复杂时,需要先创建每一个小部分,然后在组装起来
理解:区别于模板方法模式,核心方法一个是在父类中,一个是在另一个监管类中,本质类似
class Builder
{
public:
virtual void head() = 0;
virtual void body() = 0;
virtual void tail() = 0;
};
class Director
{
Builder* builder;
public:
Director(Builder* builder)
{
this->builder = builder;
}
void construct() //核心方法
//先构造每一个小部分,然后组装
{
builder->head();
builder->body();
builder->tail();
}
};
class TestBuilder: public Builder
{
public:
void head()
{
cout << "*******************" << endl;
}
void body()
{
cout << " Body Body Body" << endl;
}
void tail()
{
cout << "+++++++++++++++++++" << endl;
}
};
int main()
{
Builder* pBuilder = new TestBuilder();
Director d(pBuilder);
d.construct();
return 0;
}