#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Product
{
public:
void addProduct(string strProduct)
{
m_vecProduct.push_back(strProduct);
}
void showProduct()
{
for (auto& it : m_vecProduct)
{
cout << it << endl;
}
}
private:
vector<string> m_vecProduct;
};
class Builder
{
public:
virtual void buildPartOne() = 0;
virtual void buildPartTwo() = 0;
Product getProduct()
{
return m_objProduct;
}
protected:
Product m_objProduct;
};
class ConcreteBuilderOne : public Builder
{
public:
virtual void buildPartOne() override
{
m_objProduct.addProduct("A");
}
virtual void buildPartTwo() override
{
m_objProduct.addProduct("B");
}
};
class Director
{
public:
void construct(Builder* pobjBuilder)
{
if (pobjBuilder)
{
pobjBuilder->buildPartOne();
pobjBuilder->buildPartTwo();
}
}
};
int main()
{
Builder* pobjBuilder = new ConcreteBuilderOne();
Director objDirector;
objDirector.construct(pobjBuilder);
Product objProduct = pobjBuilder->getProduct();
objProduct.showProduct();
return 0;
}
总结:建造者模式由Builder类规定需要建造的部分,由Director类保证所有建造。创建复杂对象的算法独立于该对象的组成部分和它们的装配方式
建造者模式
最新推荐文章于 2024-06-03 19:09:04 发布