上一篇
在软件工程中,设计模式是解决常见问题的可重用方案。其中,C++建造者模式是一种创建型设计模式,它将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。本教程将带你从零开始理解并实现C++建造者模式,即使你是编程小白也能轻松上手!
想象一下你要组装一台电脑:你可以选择不同的 CPU、内存、硬盘等组件。如果你直接在一个类里写所有配置逻辑,代码会变得非常臃肿且难以维护。而建造者模式通过将构建过程拆分为多个步骤,使代码更清晰、更灵活。

下面我们用 C++ 实现一个简单的“汽车制造”例子,来演示C++设计模式中的建造者模式。
#include <iostream>#include <string>class Car {private: std::string engine; std::string wheels; std::string body;public: void setEngine(const std::string& e) { engine = e; } void setWheels(const std::string& w) { wheels = w; } void setBody(const std::string& b) { body = b; } void show() const { std::cout << "Car with Engine: " << engine << ", Wheels: " << wheels << ", Body: " << body << std::endl; }};class CarBuilder {public: virtual ~CarBuilder() = default; virtual void buildEngine() = 0; virtual void buildWheels() = 0; virtual void buildBody() = 0; virtual Car* getResult() = 0;};class SportsCarBuilder : public CarBuilder {private: Car* car;public: SportsCarBuilder() { car = new Car(); } void buildEngine() override { car->setEngine("V8 Turbo"); } void buildWheels() override { car->setWheels("Alloy Racing Wheels"); } void buildBody() override { car->setBody("Carbon Fiber Body"); } Car* getResult() override { return car; }};// 可以再添加一个 FamilyCarBuilder...class Director {private: CarBuilder* builder;public: void setBuilder(CarBuilder* b) { builder = b; } void constructCar() { builder->buildEngine(); builder->buildWheels(); builder->buildBody(); }};int main() { Director director; CarBuilder* sportsBuilder = new SportsCarBuilder(); director.setBuilder(sportsBuilder); director.constructCar(); Car* sportsCar = sportsBuilder->getResult(); sportsCar->show(); delete sportsCar; delete sportsBuilder; return 0;}当你遇到以下情况时,考虑使用建造者模式详解中提到的方法:
通过本教程,你已经掌握了C++建造者模式的基本原理和实现方法。这种设计模式教程不仅适用于 C++,也广泛应用于 Java、Python 等语言中。记住,建造者模式的核心在于“分步构建”,让复杂对象的创建变得简单可控。
现在,你可以尝试自己动手实现一个“手机建造器”或“房屋建造器”,巩固所学知识!
本文由主机测评网于2025-12-08发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025124775.html