声明:本博文篇幅短,适合快速回顾、朝花夕拾,不适合入门详解。
一、概念
将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
二、模式结构图
三、例子
class Food
{
private:
PartA * _a;
PartB * _b;
public:
void setPartA(const PartA * p);
void setPartB(const PartB * p);
};
class FoodBuilder
{
public:
virtual ~Builder();
virtual void BuilderPartA() = 0;
virtual void BuilderPartB() = 0;
virtual Food getFood() = 0;
protected:
Builder();
};
class ConcreteFoodBuilder : public FoodBuilder
{
private:
Food * _food;
public:
void BuilderPartA()
{
_food->setPartA(new PartA());
}
void BuilderPartB()
{
_food->setPartB(new PartB());
}
Food * getFood