Builder对象创建型模式,主要目的就是将一个复杂对象的构建与它的表示分离。
//产品类 产品的抽象类
```
class Product{
public:
void doSome(){}
};
```
//抽象类,规范产品的组件,有子类具体实现
```
class Builder{
public:
virtual void builderA()= 0;
virtual Product buildProduct()= 0;
};
```
//具体实现类
```
class ConcreteBuilder : public Builder{
public:
Product buildProduct()override {
return *product;
}
void builderA() override {
}
private:
Product *product = new Product();
};
```
//指挥者 统一组装过程
```
class Director{
private:
Builder *builder = new ConcreteBuilder();
public:
Product getProduct(){
builder->builderA();
return builder->buildProduct();
}
};
```
用户调用的过程
```
int main(){
ConcreteBuilder *getBuiler= new ConcreteBuilder();
Director director(getBuiler);
Product product = director.getProduct();
};
```
使用效果:
1. 改变产品的内部表示
2. 将构造代码与表示代码分离
3. 构造过程可以有更加精细的控制
来源:《设计模式:可复用面向对象软件的基础》