C++ 的设计模式之 工厂方法加单例
在下面的示例中,我将演示如何创建一个工厂类,该工厂类能够生成四个不同类型的单例对象,每个单例对象都通过单独的工厂方法进行创建。
#include <iostream>
#include <mutex>// Singleton base class
class Singleton {
protected:Singleton() {}public:Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;static Singleton& getInstance() {static Singleton instance;return instance;}void doSomething() {std::cout << "Singleton is doing something." << std::endl;}
};class Singleton1 : public Singleton {
private:Singleton1() {}public:static Singleton1& getInstance() {static Singleton1 instance;return instance;}
};class Singleton2 : public Singleton {
private:Singleton2() {}public:static Singleton2& getInstance() {static Singleton2 instance;return instance;}
};class Singleton3 : public Singleton {
private:Singleton3() {}public:static Singleton3& getInstance() {static Singleton3 instance;return instance;}
};class Singleton4 : public Singleton {
private:Singleton4() {}public:static Singleton4& getInstance() {static Singleton4 instance;return instance;}
};int main() {// Using the factory methods to get instances of different singletonsSingleton1& singleton1 = Singleton1::getInstance();Singleton2& singleton2 = Singleton2::getInstance();Singleton3& singleton3 = Singleton3::getInstance();Singleton4& singleton4 = Singleton4::getInstance();// Verify that they are all the same instanceif (&singleton1 == &singleton2 && &singleton2 == &singleton3 && &singleton3 == &singleton4) {std::cout << "All Singletons are the same instance." << std::endl;}singleton1.doSomething();singleton2.doSomething();singleton3.doSomething();singleton4.doSomething();return 0;
}
在这个示例中,我们创建了一个基类 Singleton,它实现了单例模式的基本机制,然后创建了四个派生类 Singleton1、Singleton2、Singleton3 和 Singleton4,每个派生类都有自己的工厂方法 getInstance 来创建对应的单例对象。
通过这种方式,每个派生类继承了单例的行为,但每个单例对象都是独立的实例。当我们调用工厂方法来获取这些单例对象时,它们确保只有一个实例存在,而且每个工厂方法创建的实例是不同的,即每个单例类都有自己的单例实例。
相关文章:
C++ 的设计模式之 工厂方法加单例
在下面的示例中,我将演示如何创建一个工厂类,该工厂类能够生成四个不同类型的单例对象,每个单例对象都通过单独的工厂方法进行创建。 #include <iostream> #include <mutex>// Singleton base class class Singleton { protecte…...
Deploy、Service与Ingress
Deployment 自愈 介绍:控制Pod,使Pod拥有多副本,自愈,扩缩容等能力 # 清除所有Pod,比较下面两个命令有何不同效果? kubectl run mynginx --imagenginxkubectl create deployment mytomcat --imagetomcat:8.5.68 # 自…...
定制化推送+精细化运营,Mobpush助力《迷你世界》用户留存率提升23%
随着智能设备的市场下沉,手游市场迎来了爆发式增长,《迷你世界》作为一款于2015年推出的手游,一经问世就饱受欢迎。上线短短三年,迷你世界在应用商店下载量已经高达2亿次,周下载量两千万,稳居第一名&#x…...
深度学习零基础教程
代码运行软件安装: anaconda:一个管理环境的软件–>https://blog.csdn.net/scorn_/article/details/106591160(可选装) pycharm:一个深度学习运行环境–>https://blog.csdn.net/scorn_/article/details/106591160…...
简单测试一下 展锐的 UDX710 性能
最近在接触 联通5G CPE VN007 ,发现使用的是 展锐的Unisoc UDX710 CPU,正好简单的测试一下这颗CPU CPU信息 UDX710 是一颗 双核 ARM Cortex-A55 处理器,主频高达 1.35GHz processor : 0 BogoMIPS : 52.00 Features : fp…...
一百九十、Hive——Hive刷新分区MSCK REPAIR TABLE
一、目的 在用Flume采集Kafka中的数据直接写入Hive的ODS层静态分区表后,需要刷新表,才能导入分区和数据。原因很简单,就是Hive表缺乏分区的元数据 二、实施步骤 (一)问题——在Flume采集Kafka中的数据写入HDFS后&am…...
智慧公厕:探索未来城市环境卫生设施建设新标杆
智慧公厕是当代城市建设的一项重要举措,它集先进技术、人性化设计和智能管理于一体,为人们提供更为舒适、便捷和卫生的厕所环境。现代智慧公厕的功能异常丰富,从厕位监测到多媒体信息交互,从自动化清洁到环境调控,每一…...
高压放大器在无线电能中应用有哪些
高压放大器是一种用于放大电信号的放大器,可以将输入的低电压信号放大到更高的输出电压水平。在无线电通信和其他相关领域中,高压放大器具有广泛的应用。本文将详细介绍高压放大器在无线电能中的应用。 无线电发射:高压放大器在无线电发射中起…...
若依集成MybatisPlus
目录 一、依赖变更 1. MybatisPlus依赖 2. pagehelper依赖修改 二、相关配置 1. yml配置 1.1 注释掉原Mybatis配置 1.2 加入MybatisPlus的配置 1.3 注释掉原MybatisConfig.class 三、其他配置及功能实现 1. 自动补全create_time等信息 2. 实现MP分页 3. 实现Mybati…...
List小练习,实现添加图书,并且有序遍历
SuppressWarnings({"all"})public static void main(String[] args) {List list new LinkedList(); // List list new Vector(); // List list new ArrayList();list.add(new Book1("红楼小梦",35.5,"曹雪芹"));list.add(new B…...
代码随想录二刷 Day42
62.不同路径 简单题目自己就可以写出来,注意下创建二维vector的方法就可以, dp table如下 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,0));for (int i 0; i < n; i ) {dp[…...
【Android】Drawable 和src 的区别和理解
详细讲解 在 Android 中,ImageView 的 src 属性和 background 属性用于设置不同类型的图像内容。下面是它们的详细解释: src 属性:该属性用于设置 ImageView 中显示的图像内容。它可以接受一个图像资源的引用,可以是一个图片文件…...
Linux网络-UDP/TCP协议详解
Linux网络-UDP/TCP协议详解 2023/10/17 14:32:49 Linux网络-UDP/TCP协议详解 零、前言一、UDP协议二、TCP协议 1、应答机制2、序号机制3、超时重传机制4、连接管理机制 三次握手四次挥手5、理解CLOSE_WAIT状态6、理解TIME_WAIT状态7、流量控制8、滑动窗口 丢包问题9、拥塞控制…...
C语言从入门到高级
C语言是“编程语言之首”(很多人学习的第一门编程语言),学好一门编程语言需要明确其学习路径,下面分享下我的学习路径,希望对您有所帮助。 一、C语言入门 (1)C语言概述 (2&#x…...
【MultiOTP】在Linux上使用MultiOTP进行SSH登录
在前面的文章中【FreeRADIUS】使用FreeRADIUS进行SSH身份验证已经了解过如何通过Radius去来实现SSH和SUDO的登录,在接下来的文章中只是将密码从【LDAP PASSWORD Googlt OTP】改成了【MultiOTP】生成的passcode,不在需要密码,只需要OTP去登录…...
性能超越 Clickhouse | 物联网场景中的毫秒级查询案例
1 物联网应用场景简介 物联网(Internet of Things,简称 IoT)是指通过各种信息传感、通信和 IT 技术来实时连接、采集、监管海量的传感设备,从而实现对现实世界的精确感知和快速响应,继而实现自动化、智能化管理。在查…...
05、SpringBoot 集成 RocketMQ
目录 SpringBoot集成RocketMQ消息发送三种方式1、同步消息producer-springboot创建项目添加依赖配置文件同步消息发送代码启动类Test类 comsumer-springboot创建项目添加依赖配置文件同步消息消费代码 2、异步消息生产者消费者 3、一次性消息生产者消费者 消息消费两种方式1、集…...
PR2023中如何导入字幕
PR中如何导入字幕 方法一: 点开文本,字幕,新建字幕分段(点击右上角…三个点) 键入调整内容 方法二 点开基本图形,编辑,调整,拖动位置。...
读书笔记--华为数据之道有感
通过研读华为数据之道,了解到华为作为一家非数字原生企业,其业务涵盖研发、营销、制造、供应、采购、服务等,业务相当复杂。因此华为在开展数据治理过程中明确了由谁来对数据负责,特别是对数据质量负责,明确了数据质量的衡量或度量指标,并成立了数据管理部,确定其职能定…...
汽车数据安全事件频发,用户如何保护隐私信息?
面对日益增多的汽车数据安全事件,对于广大用户来说,有没有既廉价又安全的解决方案? 频发的汽车数据安全事件 随着汽车“新四化”大潮的来临,汽车用户从电动化、网联化、智能化、共享化中切实体验到了越来越多的便利,各…...
帆软FineReport 10升级实战:从路径映射到安全配置的完整指南
1. 从FineReport 9到10的升级背景与准备工作 最近接手了一个企业级报表系统的升级项目,需要将现有的FineReport 9环境迁移到最新的10版本。在实际操作过程中发现,这不仅仅是简单的版本替换,而是涉及到路径映射、参数调整、安全配置等多个关键…...
保姆级避坑指南:树莓派4B+Ubuntu 22.04 LTS + 3.5寸屏,从开机到远程桌面一次搞定
树莓派4B与Ubuntu 22.04 LTS完美适配实战:从零搭建带屏远程开发环境 第一次接触树莓派和Ubuntu Server的新手们,往往会在搭建开发环境时遇到各种"坑"。本文将手把手带你绕过这些常见陷阱,用树莓派4B、3.5寸屏和Ubuntu 22.04 LTS打造…...
tensorrt_demos性能对比分析:FP16 vs INT8 vs DLA核心的优劣对比
tensorrt_demos性能对比分析:FP16 vs INT8 vs DLA核心的优劣对比 【免费下载链接】tensorrt_demos TensorRT MODNet, YOLOv4, YOLOv3, SSD, MTCNN, and GoogLeNet 项目地址: https://gitcode.com/gh_mirrors/te/tensorrt_demos tensorrt_demos是一个支持MODN…...
UDP,TCP协议的格式与机制
目录 一:UDP 1.UDP协议端格式 2.UDP的特点 二:TCP 1.TCP协议段格式 2.确认应答机制 1.确认应答的原理 2.为什么有两个序号?——捎带应答 3.超时重传 4.快速重传 3.连接管理机制 1.三次握手 2.四次挥手 shutdown函数 COLSE_WAI…...
【Perplexity营养饮食查询实战指南】:3大隐藏技巧让AI精准解读膳食需求并生成个性化食谱
更多请点击: https://kaifayun.com 第一章:Perplexity营养饮食查询实战指南概述 Perplexity 是一款基于大语言模型的智能问答与研究工具,其核心优势在于实时联网检索、引用溯源与多源信息聚合能力。在营养学与健康饮食领域,它可快…...
LeetCode 找到最终的安全状态题解
LeetCode 找到最终的安全状态题解 题目描述 给定一个有向图,找到所有安全节点。安全节点是永远不会走向环的节点。 示例: 输入:graph [[1,2],[2,3],[5],[0],[5],[],[]]输出:[2,4,5,6] 解题思路 方法:拓扑排序 思路&am…...
B站缓存视频转换完全指南:让珍贵内容真正属于你
B站缓存视频转换完全指南:让珍贵内容真正属于你 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经有过这样的经历࿱…...
[Android] 文案设计助手_24.06.25
[Android] 文案设计助手_24.06.25 链接:https://pan.xunlei.com/s/VOszMVvm4BmG5za6Ib11nfGrA1?pwdsg9f# 文案设计助手,助您文案生成、自动写作,模拟手写生成器。免登陆,下载即用,无需会员。...
别再只调参了!深入pix2pixHD的多尺度鉴别器与实例地图,解决你的图像合成‘塑料感’难题
突破图像合成瓶颈:pix2pixHD多尺度鉴别器与实例地图的实战精要 当你在深夜调试生成对抗网络,屏幕上的合成图像却始终带着难以消除的"塑料感"——表面过于光滑、边缘模糊、纹理缺乏层次。这种挫败感或许正是促使你点开本文的原因。作为GAN领域的…...
RTOS任务通知:轻量级通信机制的原理、应用与性能优化
1. 项目概述:为什么RTOS应用需要“任务通知”在嵌入式实时操作系统(RTOS)的世界里,任务间的通信与同步是决定系统效率、响应速度和稳定性的基石。传统的通信机制,如信号量、消息队列、事件标志组,我们早已驾…...
