当前位置: 首页 > 网络知识

C++ 设计模式之建造者模式

时间:2026-01-29 09:15:08

设计模式之建造者模式


建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

其UML图如下:

  简单理解就是Builder中定义了创建Product各个部分的接口。ConcreteBuilder中具体实现了创建Product中的各个部分的接口,就是具体的建造者。Director是根据用户的需求构建Product的(具体怎么构建,怎么把Product中的各个部件构建起来。)该模式主要用于创建一些复杂的对象,这些兑现内部构建的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。

  说到这里建造者模式具体实现的功能与模板方法模式有点类似。比如可以有不同得ConcreteBuilder类实现不同得创建方式。这样从应用上模板方法模式和建造者模式实现的功能是很相似的。但是建造者模式的侧重点是在于Director的不同,可以有不同的呈现方式,而模板方法模式的侧重点是算法中每一步实现的不同。另外,它们的类之间的关系是不同的。模板方法是通过继承的方式来实现的,而建造者模式是通过组合的方式实现的。模板方法模式主要用于执行不同的算法,建造者模式主要用于构建对象。不过者两种模式其实都可以实现很多相似的功能。这也没什么,本来同样的功能的实现方式也是多种多样的。主要看需求。另外在实际写程序的时候也不必拘泥于某种设计模式,只要遵守相关的原则,使整个程序高效、稳定、易扩展、易维护就行。两者使用的场景也有区别。其示例代码如下:

1 // BuilderModel.h文件 2 #pragma once 3 #include <iostream> 4 #include <vector> 5 #include <string> 6 7 // 产品类 8 class Product 9 15 void Show() 16 21 } 22 private: 23 std::vector<std::string> m_vec; 24 }; 25 // 建造者类 26 class Builder 27 ; 34 35 class ConcreteBuilder_0 : public Builder 36 42 virtual ~ConcreteBuilder_0() 43 47 virtual void BuildPartA() 48 52 virtual void BuildPartB() 53 57 virtual void BuildPartC() 58 62 Product getResult() 66 private: 67 Product * m_p; 68 }; 69 70 class ConcreteBuilder_1 : public Builder 71 77 virtual ~ConcreteBuilder_1() 78 82 virtual void BuildPartA() 83 87 virtual void BuildPartB() 88 92 virtual void BuildPartC() 93 97 Product getResult() 98 101 private: 102 Product * m_p; 103 }; 104 // 指挥者类 105 class Director 106 115 };

测试代码如下:

1 #include <iostream> 2 #include "BuilderModel.h" 3 4 int main() 5

测试结果如下图:



上一篇:Mitsubishi 三菱FXPLC扫描周期讲解
下一篇:Mitsubishi 三菱FXPLC学习之条件转移
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素