主页 > IT业界  > 

23种设计模式-建造者模式

23种设计模式-建造者模式
模式定义

建造者模式(Builder Pattern)是一种创建型设计模式,它将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。其核心思想是分步骤构建复杂对象,并通过统一的接口控制构建流程,适用于需要灵活组合复杂组件且构建顺序稳定的场景(如数控系统的多模块配置)。


模式结构

产品(Product):最终要构建的复杂对象(如数控系统),包含多个组件(控制器、传感器等)。 抽象建造者(Builder):定义构建产品各个部件的接口(如buildController()、buildSensor())。 具体建造者(Concrete Builder):实现抽象建造者接口,提供具体组件的实现(如西门子、发那科数控系统建造器)。 指挥者(Director):控制构建流程,按顺序调用建造者的方法生成完整产品。


C++示例(数控系统场景)

#include #include // 产品类:数控系统 class CNCSystem { public: void setController(const std::string& controller) { controller_ = controller; } void setSensor(const std::string& sensor) { sensor_ = sensor; } void setDriver(const std::string& driver) { driver_ = driver; } void showConfig() { std::cout << "数控系统配置:\n" << "- 控制器: " << controller_ << "\n" << "- 传感器: " << sensor_ << "\n" << "- 驱动模块: " << driver_ << "\n"; } private: std::string controller_; std::string sensor_; std::string driver_; }; // 抽象建造者 class CNCBuilder { public: virtual ~CNCBuilder() = default; virtual void buildController() = 0; virtual void buildSensor() = 0; virtual void buildDriver() = 0; virtual CNCSystem getResult() = 0; }; // 具体建造者:西门子系统 class SiemensBuilder : public CNCBuilder { public: SiemensBuilder() { system_ = CNCSystem(); } void buildController() override { system_.setController("西门子840D控制器"); } void buildSensor() override { system_.setSensor("西门子高精度编码器"); } void buildDriver() override { system_.setDriver("西门子伺服驱动模块"); } CNCSystem getResult() override { return system_; } private: CNCSystem system_; }; // 具体建造者:发那科系统 class FanucBuilder : public CNCBuilder { public: FanucBuilder() { system_ = CNCSystem(); } void buildController() override { system_.setController("发那科30i控制器"); } void buildSensor() override { system_.setSensor("发那科激光位移传感器"); } void buildDriver() override { system_.setDriver("发那科α系列驱动模块"); } CNCSystem getResult() override { return system_; } private: CNCSystem system_; }; // 指挥者:控制构建流程 class Director { public: void construct(CNCBuilder& builder) { builder.buildController(); builder.buildSensor(); builder.buildDriver(); } }; // 客户端使用 int main() { Director director; SiemensBuilder siemensBuilder; director.construct(siemensBuilder); CNCSystem siemens = siemensBuilder.getResult(); siemens.showConfig(); FanucBuilder fanucBuilder; director.construct(fanucBuilder); CNCSystem fanuc = fanucBuilder.getResult(); fanuc.showConfig(); return 0; }

输出结果

数控系统配置: 控制器: 西门子840D控制器 传感器: 西门子高精度编码器 驱动模块: 西门子伺服驱动模块 数控系统配置: 控制器: 发那科30i控制器 传感器: 发那科激光位移传感器 驱动模块: 发那科α系列驱动模块
模式优点

构建与表示分离:客户端无需了解内部组件细节,只需指定建造者类型。 灵活扩展:新增具体建造者即可支持新品牌数控系统(如三菱),无需修改指挥者逻辑。 流程控制:通过指挥者统一管理构建顺序,确保组件装配的稳定性。


应用场景

需要生成的对象具有复杂内部结构(如数控系统的多模块依赖)。 对象的构建过程需要独立于其组成部分(如不同品牌的组件混用)。

通过建造者模式,数控系统的构建过程被标准化,同时支持灵活扩展不同厂商的硬件配置。

标签:

23种设计模式-建造者模式由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“23种设计模式-建造者模式