美文网首页
c++建造者模式

c++建造者模式

作者: 一路向后 | 来源:发表于2021-03-03 22:42 被阅读0次

1.建造者模式简介

   建造者模式将一个复杂对象的构造过程与其表现分离,这样,同一个构造过程可用于创建多个不同的表现.

2.源码实现

#include <iostream>
#include <string>

using namespace std;

//产品
class Product
{
public:
    string ProductPartA;
    string ProductPartB;
    string ProductPartC;

    Product(){};
    ~Product(){};

    void setPartAColor(string str)
    {
        ProductPartA = str;
    }

    void setPartBColor(string str)
    {
        ProductPartB = str;
    }

    void setPartCColor(string str)
    {
        ProductPartC = str;
    }
};

/*抽象建造者*/
class Builder
{
public:
    virtual void BuildPartA() = 0;
    virtual void BuildPartB() = 0;
    virtual void BuildPartC() = 0;
    virtual const Product &GetProduct() = 0;
};

/*具体建造者*/
class ConcreteBuilder : public Builder
{
private:
    Product _pro;

public:
    void BuildPartA()
    {
        _pro.setPartAColor("red");
    }

    void BuildPartB()
    {
        _pro.setPartBColor("green");
    }

    void BuildPartC()
    {
        _pro.setPartCColor("black");
    }

    const Product &GetProduct()
    {
        cout << _pro.ProductPartA << endl;
        cout << _pro.ProductPartB << endl;
        cout << _pro.ProductPartC << endl;
        return _pro;
    }
};

/*指挥者*/
class Director
{
private:
    Builder *_bld;

public:
    Director(Builder *bld)
    {
        _bld = bld;
    }

    void Construct()
    {
        _bld->BuildPartA();
        _bld->BuildPartB();
        _bld->BuildPartC();

        _bld->GetProduct();
    }
};

int main()
{
    ConcreteBuilder *build = new ConcreteBuilder();
    Director *director = new Director(build);

    director->Construct();

    delete director;
    delete build;

    return 0;
}

3.编译源码

$ g++ -o example example.cpp

4.运行及其结果

$ ./example
red
green
black

相关文章

网友评论

      本文标题:c++建造者模式

      本文链接:https://www.haomeiwen.com/subject/scocqltx.html