当前位置: 首页 > news >正文

工厂模式:简单工厂模式

工厂模式
简单工厂模式:子类对象较多,则引入工厂类来创建

简单工厂模式 流程:

img

实例:

某电视机厂为各个品牌代工生产电视机,可以使用简单工厂的模式来实现

img

#include <iostream>
#include <vector>
using namespace std;typedef enum ProductTypeTag
{Hair,Hisense,
}PRODUCTTYPE;//抽象产品类 TV(电视机类)
class TV
{
public:virtual void Show() = 0;virtual ~TV(){};//声明析构函数为虚函数,防止内存泄漏
};//具体产品类 HairTV(海尔电视类)
class HairTV : public TV
{
public:void Show(){cout<<"I'm HairTV "<<endl;}
};//具体产品类 HisenseTV(海信电视类)  
class  HisenseTV : public TV
{
public:void Show(){cout<<"I'm HisenseTV"<<endl;}
};// 工厂类 TVFactory(电视机工厂类)
class TVFactory
{
public:TV* CreateTV(PRODUCTTYPE type){switch (type){case Hair:return new HairTV();case Hisense:return new HisenseTV();default:return NULL;}}
};int main(int argc, char *argv[])
{// 创建工厂类对象TVFactory* myTVFactory = new  TVFactory();TV* hairTV = myTVFactory->CreateTV(Hair);if (hairTV != NULL)hairTV->Show();TV* hisenseTV = myTVFactory->CreateTV(Hisense);if (hisenseTV != NULL)hisenseTV->Show();delete  myTVFactory;myTVFactory = NULL;delete hairTV;hairTV = NULL;delete hisenseTV;hisenseTV = NULL;  return 0;
}

当子类对象很多时,就需要用简单工厂模式来统一创建。它的优点是 可以将对象的创建和使用逻辑区分开,主次分明;缺点是 对象类和工厂类的耦合度较高,不利于扩展

相关文章:

  • 使用纯前端技术html+css+js实现一个蔬果商城的前端模板!
  • 【LeetCode】1.两数之和
  • 重新定义户外防护!基于DeepSeek的智能展开伞棚系统技术深度解析
  • Cpp实现window上cmd执行效果
  • 2025.4.21日学习笔记 JavaScript String、Array、date、math方法的使用
  • linux基础学习--linux文件与目录管理
  • 目标检测篇---Fast R-CNN
  • 四元数转旋转矩阵
  • 第一篇:从哲学到管理——实践论与矛盾论如何重塑企业思维
  • Java高频面试之并发编程-04
  • 瑞吉外卖-分页功能开发中的两个问题
  • Python爬虫实战:获取高考网专业数据并分析,为志愿填报做参考
  • 【Python爬虫实战篇】--爬取豆瓣电影信息(静态网页)
  • 【Python网络爬虫开发】从基础到实战的完整指南
  • 算法之动态规划
  • 【Unity iOS打包】报错解决记录
  • 34、Spark实现读取XLS文件
  • Linux 进程与线程间通信方式及应用分析
  • 什么是Manus,国内用户如何订阅Manus
  • 论文阅读HARIVO: Harnessing Text-to-Image Models for Video Generation
  • 宁波市纪委监委通报4起违反中央八项规定精神典型问题
  • 神舟十九号载人飞行任务取得圆满成功
  • 黄育奇当选福建惠安县人民政府县长
  • “ChatGPT严选”横空出世了,“DeepSeek严选”还要等多久?
  • 顺利撤离空间站,神十九乘组踏上回家之旅
  • 招行一季度净利372.86亿降2.08%,营收降逾3%