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

设计模式 C++简单工厂简单例子

工厂模式通过引入一个工厂类来负责对象的创建,而客户端代码只需要与这个工厂类交互,无须关心具体的对象创建细节。

简单工厂是最简单的情况,需要下面四个步骤,

     提供一个抽象工厂类 :所有具体工厂类的父类,

     提供与产品对应的工厂类:负责实例化产品对象,

     提供一个抽象产品类: 所有产品的父类,

     提供一个或多个产品类:工厂方法模式所创建的具体实例对象,

一个简单例子,具有抽象产品类、产品类、工厂类三种类;

抽象产品类:Gold,金子类;

产品类:金条类,金砖类,金元宝类;

工厂类:GoldFactory,根据传入的类型字符串来生产不同的金子产品;

简单实现示例,只有一个属性;

#include <iostream>class Gold {
public:Gold(int weight) :m_weight(weight){}virtual ~Gold(){}
protected:int m_weight;
};class GoldBar :public Gold {
public:GoldBar(int weight) :Gold(weight){std::cout << "金条" << std::endl;}
};class GoldBrick :public Gold {
public:GoldBrick(int weight) :Gold(weight){std::cout <&l

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • github的Codespaces是什么
  • Scikit-learn简介
  • k8s多集群管理工具kubecm
  • 【leetcode】两数之和【简单】( 注释详解:C++map/ C哈希表)
  • 高级java每日一道面试题-2024年7月27日-并发篇-Thread类中的yield方法有什么作用?
  • 基于STM32的多协议通信系统设计与实现
  • 知,已经在行;知行是一件事,不是两件事
  • 大厂面试官问我:ConcurrentHashMap底层原理?【后端八股文十五:Java集合合集】
  • 从 Pandas 到 Polars 三十八:Polars 的“瘦身”功能
  • GPU驱动、CUDA 、cuDNN 和CUDA Toolkit之间的关系(深度学习小白必懂)
  • Linux Gui 窗口对话和窗口操作
  • opencascade AIS_Manipulator源码学习
  • Pytorch 9
  • dsp c6657 SYS/BIOS学习笔记
  • 用Postman Flows打造你的专属API:外部公开,轻松上手!
  • .pyc 想到的一些问题
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • css布局,左右固定中间自适应实现
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Hexo+码云+git快速搭建免费的静态Blog
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript-Array类型
  • java正则表式的使用
  • Joomla 2.x, 3.x useful code cheatsheet
  • Python中eval与exec的使用及区别
  • SQL 难点解决:记录的引用
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 分享几个不错的工具
  • 入口文件开始,分析Vue源码实现
  • 写代码的正确姿势
  • ​补​充​经​纬​恒​润​一​面​
  • #Spring-boot高级
  • #在 README.md 中生成项目目录结构
  • (8)STL算法之替换
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)大道至简,职场上做人做事做管理
  • ***测试-HTTP方法
  • **PHP分步表单提交思路(分页表单提交)
  • .gitignore不生效的解决方案
  • .Net Web窗口页属性
  • @Autowired @Resource @Qualifier的区别
  • @软考考生,这份软考高分攻略你须知道
  • [14]内置对象
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [Android]Android开发入门之HelloWorld
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [bzoj1038][ZJOI2008]瞭望塔
  • [BZOJ3757] 苹果树