C++设计模式-工厂模式(Factory Method)
目录
C++设计模式-工厂模式(Factory Method)
一、意图
二、适用性
三、结构
四、参与者
五、代码
C++设计模式-工厂模式(Factory Method)
一、意图
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
二、适用性
- 当一个类不知道它所必须创建的对象的类的时候。
- 当一个类希望由它的子类来指定它所创建的对象的时候。
- 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
三、结构
四、参与者
- Product
定义工厂方法所创建的对象的接口。
- ConcreteProduct
实现Product接口。
- Creator
声明工厂发法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
可以调用工厂方法以创建一个Product对象。
- ConcreteCreator
重定义工厂方法以返回一个ConcreteProduct实例。
五、代码
#include<iostream>
using namespace std;class Product {
public:virtual void ShowInformation() = 0;
};class Product_A : public Product {
public:void ShowInformation() {cout << "Product_A Information" << endl;}
};class Product_B : public Product {
public:void ShowInformation() {cout << "Product_B Information" << endl;}
};class Factory {
public:virtual Product* CreateProduct() = 0;
};class Factory_A : public Factory {
public:Product* CreateProduct() {return new Product_A();}
};class Factory_B : public Factory {
public:Product* CreateProduct() {return new Product_B();}
};int main() {Factory* FactoryA = new Factory_A();Product* ProductA = FactoryA->CreateProduct();ProductA->ShowInformation();Factory* FactoryB = new Factory_B();Product* ProductB = FactoryB->CreateProduct();ProductB->ShowInformation();return 0;
}
相关文章:
C++设计模式-工厂模式(Factory Method)
目录 C设计模式-工厂模式(Factory Method) 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-工厂模式(Factory Method) 一、意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory…...
八大排序算法
#include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N1e510; int q[N]; int w[N],s[N]; int n,sz; //直接插入排序 ,对于某一个元素加入到一个有序的序列中,将该元素依次从该位置开始 //从后往前比较&…...
机器学习笔记 - 两个静态手势识别的简单示例
一、关于手势识别 手势识别方法通常分为两类:静态或动态。 静态手势是那些只需要在分类器的输入处处理单个图像的手势,这种方法的优点是计算成本较低。动态手势需要处理图像序列和更复杂的手势识别方法。 进一步了解可以参考下面链接。 静态手势识别和动态手势识别的区别和技…...
2023年,有哪些好用的互联网项目管理软件?
项目管理是为了使工作项目能够按照预定的需求、成本、进度、质量顺利完成,而对人员、产品、过程和项目进行分析和管理的活动。 一直以来,项目管理被企业管理人员和各级人员所重视,项目管理是一个项目的灵魂,只有做好了项目管理&am…...
python 按照文件大小读取文件
返回一个list,每个list里面是一个元组(filename, file_size),按照file_size从小到大排序的 import osdef get_sorted_files(dir_path):# 存储最后的文件路径files []# 便利dir_path下面的文件或者文件夹for file in os.listdir(dir_path):file_path o…...
黑客帝国代码雨
黑客帝国代码雨奉上,之前一直想写,但一直没抽出时间来,今天把他写了,也算了了装心事 效果图如下 原理就不讲了,代码写的很清楚而且不长 有不懂的评论区问我就好 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">&l…...
基于SpringBoot的植物健康系统
目录 前言 一、技术栈 二、系统功能介绍 系统首页 咨询专家 普通植物检查登记 珍贵植物检查登记 植物救治用料登记 植物救治材料管理 植物疾病案例管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&am…...
Kettle连接数据库[MySQL]报错
在连接数据库页面填写完成后点击“测试” 报错信息: 错误连接数据库 [ETLqiangzi] : org.pentaho.di.core.exception.KettleDatabaseException: Error occurred while trying to connect to the databaseDriver class org.gjt.mm.mysql.Driver could not be found…...
Postman接口测试学习之常用断言
什么是断言? 断言——就是结果中的特定属性或值与预期做对比,如果一致,则用例通过,如果不一致,断言失败,用例失败。断言,是一个完整测试用例所不可或缺的一部分,没有断言的测试用例…...
自动化机器学习AutoML之flaml:利用flaml框架自动寻找最优算法及其对应最佳参数python
AutoML 一、自动化机器学习包简介1、H2O (Python,R,Java,Scala)2、auto-sklearn(Linux,Python)3、FLAML(Python)4、AutoGlueon(安装比较啰嗦,略过)二、FLAML1、安装2、方法.fit()常用参数介绍3、代码(1) 解决分类问题(2)解决回归问题一、自动化机器学习包简介 机…...
支付宝sdk商户私钥 如何生成?
1、先下载密钥工具 https://opendocs.alipay.com/isv/02kipk 2、安装后生成密钥 3、配置密钥 4、将工具生成的公钥复制进去生成公钥 简单来说就是私钥是用工具生成的,不会在页面上显示 商户私钥 支付宝公钥...
Linux之epoll理解
IO多路复用有几种实现方式:select poll和epoll。本篇文章对epoll进行总结理解。 IO多路复用的含义,我个人的理解是通过一个线程实现对多个socket的侦听,epoll与select和poll的区别是epoll效率最高。select的最高管理1024个socket并且是通过轮…...
龟速乘 - a * b爆ll且模数很大时的计算方法
LL qmul(LL a, LL k, LL b) {LL res 0;while (k){if (k & 1) res (res a) % b;a (a a) % b;k >> 1;}return res; } 如果int128也会爆掉的话可以用这种方法 也是快速幂的思想,快速幂是乘,这个是加...
计算机网络笔记3 数据链路层
计算机网络系列笔记目录👇 计算机网络笔记6 应用层计算机网络笔记5 运输层计算机网络笔记4 网络层计算机网络笔记3 数据链路层计算机网络笔记2 物理层计算机网络笔记1 概述 文章前言 💗 站在巨人的肩膀上,让知识的获得更加容易!…...
如何实现矩阵的重采样问题
文章目录 前言一、问题描述二、回答 前言 记录知乎的自问自答。 一、问题描述 我的问题是这样的,有两个列向量E和F,需要注意的是,E和F是连续的,可任意插值,得到包含其中的子向量。E和F通过一个mn的矩阵联系起来&…...
Spring-事务管理-加强
目录 开启事务 编程式事务 声明式事务 声明式事务的优点 声明式事务的粒度问题 声明式事务用不对容易失效 Spring事务失效可能是哪些原因 Transactional(rollbackFor Exception.class)注解 Spring 事务的实现原理 事务传播机制 介绍 用法 rollbackFor 场景举例 …...
Minecraft个人服务器搭建自己的皮肤站并实现外置登录更换自定义皮肤组件
Minecraft个人服务器搭建自己的皮肤站并实现外置登录更换自定义皮肤组件 大家好,我是艾西有不少小伙伴非常喜欢我的世界Minecraft游戏,今天小编跟大家分享下Minecraft个人服务器怎么设置皮肤站。 Minecraft皮肤站是什么?其实官网就有皮肤站…...
解决ubuntu中没有网络连接的图标
现象:Ubuntu连接网络 在设置中没有显示网络图标 解决方案: 命令为 sudo nmcli networking off sudo nmcli networking on sudo service network-manager restart 重启ubuntu,网络连接完成...
数据结构基本概念-Java常用算法
数据结构基本概念-Java常用算法 1、数据结构基本概念2、数据逻辑结构3、算法时间复杂度 1、数据结构基本概念 数据(Data):数据是信息的载体,其能够被计算机识别、存储和加工处理,是计算机程序加工的“原材料”。数据元…...
流程图设计制作都有哪些好用的工具
流程图是一种直观的图形表示方式,通常用于显示事物的过程、步骤和关系。在现代工作中,设计师经常需要绘制各种流程图来解释工作过程、产品设计等。本文将为您推荐7个流程图软件,以帮助您快速绘制高效的流程图,并提高工作效率。 即…...
2023-10-7
今日感冒了,整个人都不舒服,现在才 8 点,已经不想学习了。嗓子眼感觉不属于我了,痛死了。然后头也晕。 哎,今天又啥也没干 今日学习: 哎,今天就做了 RWCTF2022-Digging-into-kernel-2 这道题…...
【java源码】二甲医院his系统全套源码 云HIS系统源码
基层医院云HIS系统源码 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能,还能与公卫、PACS等各类外部系统融合&…...
LRU 缓存 -- 哈希链表
相关题目 146. LRU 缓存 要让 put 和 get ⽅法的时间复杂度为 O(1),我们可以总结出 cache 这个数据结构必要的条件: 1、显然 cache 中的元素必须有时序,以区分最近使⽤的和久未使⽤的数据,当容量满了之后要删除最久未使⽤的那个元…...
DWC数字世界大会先导论坛将于10月13日在宁波举办 | 数字技术赋能世界可持续发展
农业经济影响世界数千年,工业经济从欧美发源开始已有数百年,数字经济作为世界未来发展之大势,将成为影响未来数百年的世界命题。在以中国式现代化全面推进中华民族伟大复兴的历史征程中,数字技术、数字经济作为中国式现代化实践最…...
Springboot实现登录功能(token、redis、登录拦截器、全局异常处理)
登录流程: 1、前端调用登录接口,往接口里传入账号,密码 2、根据账号判断是否有这个用户,如果有则继续判断密码是否正确 3、验证成功后,则是根据账号,登录时间生成token(用JWT) 4、将…...
AI工程化—— 如何让AI在企业多快好省的落地?
文章目录 前言内容简介读者对象专家推荐目录赠书活动 前言 作为计算机科学的一个重要领域,机器学习也是目前人工智能领域非常活跃的分支之一。机器学习通过分析海量数据、总结规律,帮助人们解决众多实际问题。随着机器学习技术的发展,越来越多…...
mysqld_multi测试
mysqld_multi测试 mysql版本:5.7.25-log 在OS上分别安装了两套mysql, data目录为/mysql/mysql3306、 /mysql/mysql3307 。 端口分别为3306 、3307 配置文件为: /mysql/mysql3306/my.cnf /mysql/mysql3307/my.cnf 参考文档: htt…...
MDC方式实现简单链路追踪
MDC 方式实现日志链路追踪 拦截器 package com.cdn.log.interceptor;import com.cdn.log.consts.CLogConst; import com.cdn.log.utils.IdUtil; import org.slf4j.MDC; import org.springframework.util.StringUtils; import org.springframework.web.servlet.ModelAndView; im…...
Linux深度学习:除基本命令操作外的实用操作
Linux深度学习:除基本命令操作外的实用操作 软件安装systemctl软连接日期、时区IP地址、主机名网络传输下载和网络请求端口 进程管理主机状态系统资源监控磁盘信息监控网络状态监控 环境变量上传、下载压缩、解压root用户、用户、用户组管理查看、修改权限控制 软件…...
app对接广告变现平台:影响app广告单价的4大因素
在移动应用开发者和媒体公司竞相寻求提高广告变现效率的今天,理解影响APP广告单价的关键因素至关重要。广告单价是广告收入的核心组成部分,它受多种因素的影响,直接关系到媒体的盈利能力。主要因素大概有以下几点:#APP广告变现# …...
怎样把自己的网站做推广/企业网站代运营
前置知识 #define pi acos(-1.0) 是因为 acos为cos的反函数 cos(pi)-1 使用三角函数都要换为弧度制,角度制*pi/180弧度制 C1. Simple Polygon Embedding 题目大意 给定一个边长为 1 的正 2n 边形,求外接正方形的最小面积,n为…...
wordpress仿内涵段子/希爱力双效片
标识符和表达式是程序设计经常用到的两个基本概念。在用高级语言进行程序设计时,如果程序要对某个变化的量进行处理时,通常都要对该变化量定义一个具有某种数据类型的符号名,用该符号名也就等于使用了该变化量。在汇编语言中,也是…...
百度seo整站优化公司/武汉网站推广公司排名
原文地址:http://blog.sina.com.cn/s/blog_6bc811e401011a17.html java.sql.SQLException: 无效的列索引 “无效的列索引”其实是个低级的错误,原因无非几个: 1、sql串的?号数目和提供的变量数目不一致: 例如:jdbcTemplate.updat…...
怎么删除wordpress插件/北京seo薪资
Web 的攻击技术 针对 Web 的攻击技术 1.HTTP 不具备必要的安全功能 2.在客户端即可篡改请求 3.对Web应用的攻击模式 主动攻击被动攻击 以服务器为目标的主动攻击 主动攻击(active attack)是指攻击者通过直接访问 Web 应用,把攻击代码传入的…...
网上做名片的网站/太仓seo网站优化软件
js中confirm提示三个按钮“是”“否”“取消” 重载DOM中confirm window.confirm function(str) { strstr.replace(/\/g, "&chr(39)&").replace(/\r\n|\n|\r/g, "&VBCrLf&"); execScript("n msgbox(" …...
免费建设交友网站/微信营销和微博营销的本质区别
一、反向代理 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代…...