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

C++ 设计模式之简单工厂模式

时间:2026-01-26 14:20:03

设计模式之简单工厂模式(C++)
  简单工厂模式,主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。优点:适用于不同情况创建不同的类时。缺点:客户端必须要知道基类和工厂类,耦合性差。需要根据不同的需求创建不同的类。添加类的时候需要更爱工厂类。
以四则运算为例,其UML图如下:

在客户端中给简单工厂类传递相关参数,工厂根据参数判断要create什么类型的对象,然后返回该对象。示例代码如下:

1 // SimpleFactoryModel.h文件 2 #pragma once 3 4 // 操作基类 5 template<typename T> 6 class COperator 7 ; 14 15 template<typename T> 16 void COperator<T>::setArgs(T lpa, T rpa) 17 21 // 加法类 22 template<typename T> 23 class CAddOperator : public COperator<T> 24 30 }; 31 // 减法类 32 template<typename T> 33 class CSubOperator : public COperator<T> 34 40 }; 41 // 乘法类 42 template<typename T> 43 class CMulOperator : public COperator<T> 44 50 }; 51 // 除法类 52 template<typename T> 53 class CDivOperator : public COperator<T> 54 return COperator<T>::lah / COperator<T>::rah; 64 } 65 }; 66 // 工厂类 67 template<typename T> 68 class CCalculatorFactory 69 ; 73 74 template<typename T> 75 COperator<T> * CCalculatorFactory<T>::createObject(char c) 76 96 return oper; 97 }

测试代码如下:

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

测试输出如下:

  简单工厂模式破坏了开放封闭原则,当想添对象类型的时候,例如上例中想添加一个‘^’的运算,则需要添加一个乘方类并且需要修改简单工厂类。这是简单工工厂模式的一个缺点,因为我们最好遵循只添加不修改的原则,即开放封闭原则。



上一篇:C++ 设计模式之访问者模式
下一篇:Qt 分层架构的使用和优化
  • 英特尔与 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种方法技巧

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