建造者模式生成的对象有复杂的内部结构,将分步骤的去构建一个复杂的对象,分多少步是确定的,而每一步的实现是不同的,可能经常发生变化;(类比工厂模式)
#include <iostream>
#include <vector>
using namespace std;
class Builder;
// Product
class Product
{
public:
void AddPart(const char *info) { m_PartInfoVec.push_back(info); }
void ShowProduct()
{
for (std::vector<const char *>::iterator item = m_PartInfoVec.begin();
item != m_PartInfoVec.end(); ++item)
{
cout<<*item<<endl;
}
}
private:
std::vector<const char *> m_PartInfoVec;
};
// Builder
class Builder
{
public:
virtual void BuildPartA() {}
virtual void BuildPartB() {}
virtual Product *GetProduct() { return NULL; }
};
// ConcreteBuilder
class ConcreteBuilder : public Builder
{
public:
ConcreteBuilder() { m_Product = new Product(); }
void BuildPa