c++建造者模式
2021-03-03 本文已影响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