/** * @name 建造者模式 * @brief: 分步构造复杂对象 * @note 场景:创建包含多个配置选项的对象(如电脑配置、订单) */ class Pizza { public: void setDough(const std::string& d) { dough = d; } void setSauce(const std::string& s) { sauce = s; } void addTopping(const std::string& t) { toppings.push_back(t); } private: std::string dough; std::string sauce; std::vector toppings; }; class PizzaBuilder { public: virtual void buildDough() = 0; virtual void buildSauce() = 0; virtual void buildToppings() = 0; Pizza* getPizza() { return pizza; } protected: Pizza* pizza = new Pizza(); }; class HawaiianBuilder : public PizzaBuilder { public: void buildDough() override { pizza->setDough("cross"); } void buildSauce() override { pizza->setSauce("mild"); } void buildToppings() override { pizza->addTopping("ham"); pizza->addTopping("pineapple"); } }; class Director { public: Pizza* makePizza(PizzaBuilder* builder) { builder->buildDough(); builder->buildSauce(); builder->buildToppings(); return builder->getPizza(); } }; // 使用 int main() { Director director; HawaiianBuilder builder; Pizza* pizza = director.makePizza(&builder); }