一、意图:
将一个复杂对象的构建与其表示分离,同样的构建过程可以创建不同的表示;
二、类图:
三、组成元素:
Builder:创建对象的抽象接口;
ConcreteBuilder:实现Builder接口并构建对象产品的各个部件;
Director:构建一个使用Builder的接口;
Product:对象产品;
四、实现代码:
#include "iostream" using namespace std; class Product { }; class Builder { public: virtual void BuildPartA()=0; virtual void BuildPartB()=0; }; class ConcreteBuilder:public Builder { public: void BuildPartA() { cout<<"BuildPartA"<<endl; } void BuildPartB() { cout<<"BuildPartB"<<endl; } Product* GetResult() { cout<<"Build Completed!"<<endl; return new Product; } }; class Director { private: Builder* m_builder; public: Director(Builder* builder) { m_builder=builder; } void Construct() { m_builder->BuildPartA(); m_builder->BuildPartB(); } }; void main() { ConcreteBuilder* builder=new ConcreteBuilder(); Director* director=new Director(builder); director->Construct(); Product* product=builder->GetResult(); }