设计模式之建造者模式

设计模式之建造者模式

建造者模式解决的问题:
当创建的对象很复杂(通常是由其它对象组合而成)时,我们将创建的过程分离开,一步一步进行对象的创建,在每一步中可以引入参数,使得可以经过相同的步骤得到不同的对象。
结构图如下:
这里写图片描述
具体代码如下:

//Product.h
#ifndef PRODUCT_H_
#define PRODUCT_H_
#include <iostream>
using namespace std;
class Product {
public:
    Product() {
        ProducePart();
        cout << "return a product" << endl;
    }
    ~Product() {}
    void ProducePart() {
        cout << "build part of product" << endl;
    }
};
class ProductPart {
public:
    ProductPart()
    ~ProductPart()
    ProductPart* BuildPart() {
        return new ProductPart();
    }
}
#endif //PRODUCT_H_

//Build.h
#ifndef BUILDER_H_
#define BUILDER_H_
#include <string>
#include "Product.h"
using namespace std;
class Builder {
public:
    virtual ~Builder() {}
    virtual void BuildPartA(const string &buildPara) = 0;
    virtual void BuildPartB(const string &buildPara) = 0;
    virtual void BuildPartC(const string &buildPara) = 0;
    virtual Product* GetProduct() = 0;
protected:
    Builder() {}
};
class ConcreteBuilder : public Builder {
public:
    ConcreteBuilder() {}
    virtual ~ConcreteBuilder() {}
    virtual void BuildPartA(const string &buildPara) {

    }
    virtual void BuildPartB(const string &buildPara) = 0;
    virtual void BuildPartC(const string &buildPara) = 0;
    virtual Product* GetProduct() = 0;
}
#endif BUILDER_H_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值