定义:
将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示
上面是建造者模式的官方定义,当从上面的一句很难深入透彻地理解建造者模式的核心。针对定义做如下解释
理解

#include
using namespace std;
class Product
{
public:
Product() = default;
~Product() = default;
void SetBatteryCapacity(string batteryCapacity) {
m_batteryCapacity = batteryCapacity;
}
string GetBatteryCapacity() { return m_batteryCapacity; }
void ShowProductInfo() {
cout << m_batteryCapacity << endl;
}
private:
string m_batteryCapacity;
};
class AbstractBuilder
{
public:
virtual void BuildBattery() = 0;
};
class BuilderA : public AbstractBuilder
{
public:
BuilderA() {
m_product = new Product();
}
void BuildBattery() override {
m_product->SetBatteryCapacity("3000mA");
}
Product* GetProduct() {
return m_product;
}
~BuilderA() {
if (nullptr != m_product)
delete m_product;
}
private:
Product* m_product;
};
class Director
{
public:
void Creator(AbstractBuilder* pbuilder) {
pbuilder->BuildBattery();
}
};
int main() {
// 创建产品组件
BuilderA builderA;
// 组装产品
Director director;
director.Creator(&builderA);
// 获取产品
auto product = builderA.GetProduct();
product->ShowProductInfo();
return 0;
}