Builder模式与Abstract factory 模式比较相似,不同的地方在于Builder模式在创建过程中是按步骤来创建对象的每个部分,然后返回该被创建的对象;而抽象工厂则侧重于不同的工厂创建不同的产品。
如下图所示:
理解的要点有两个,一个是Client对Director的使用;另外一个是Director的CreateProduct()方法的实现。
CreateProduct()方法的实现:
Product Director::CreateProduct( AbstractBuilder builder)
{
builder.BuildPart1();
builder.BuildPart2();
builder.BuildPart3();
return builder.GetProduct();
}
Client 的调用:
Builder1 builder;
Director dir;
Product pro = dir.CreateProduct( builder);