设计模式1、单例模式 Singleton

解释说明:确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例
要点如下
有且仅有一个实例
必须自行创建自己的唯一实例
必须给所有其他对象提供这一实例
具体实现要点如下
提供一个 private 构造函数(防止外部调用而构造类的实例)
提供一个该类的 static private 对象
提供一个 static public 函数,用于创建或获取其本身的静态私有对象(例如:GetInstance())
除此之外,还有一些关键点(需要多家注意,很容易忽视):
线程安全(双检锁 - DCL,即:double-checked locking)
资源释放
// 单例 - 懒汉式/饿汉式公用
class Singleton
{
public:static Singleton* GetInstance();
private:Singleton() {}  // 构造函数(被保护)
private:static Singleton* m_pSingleton;  // 指向单例对象的指针// GC 机制class GC{public:~GC(){// 可以在这里销毁所有的资源,例如:db 连接、文件句柄等if (m_pSingleton != NULL) {cout << "Here destroy the m_pSingleton..." << endl;delete m_pSingleton;m_pSingleton = NULL;}}static GC gc;  // 用于释放单例};
};// 单例 - 懒汉式(双检锁 DCL 机制)
Singleton* Singleton::m_pSingleton = NULL;
Singleton* Singleton::GetInstance()
{if (m_pSingleton == NULL)m_pSingleton = new Singleton();return m_pSingleton;
}#include "singleton.h"
#include <iostream>
using namespace std;
Singleton::GC Singleton::GC::gc; // 重要
int main()
{Singleton::GetInstance();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/120480.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 下安装及配置 MySQL 8.1 (图文教程)

目录 下载 MySQL安装 MySQL配置 MySQL修改密码配置环境变量 卸载 MySQL开源项目微服务商城项目前后端分离项目 下载 MySQL 访问 MySQL 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 下载 MySQL 时&#xff0c;你可以选择 ZIP 包或 MSI 安装&#xff1a; ZIP包…

深度学习文本预处理利器:Tokenizer详解

目录 1 Tokenizer 介绍 1.1 Tokenizer定义 1.2 Tokenizer方法 1.3 Tokenizer属性 2 Tokenizer文本向量化 2.1 英文文本向量化 2.2 中文文本向量化 3 总结 1 Tokenizer 介绍 Tokenizer是一个用于向量化文本&#xff0c;将文本转换为序列的类。计算机在处理语言文字时&…

什么是大数据可视化

在互联网高速发展的当今&#xff0c;5G的兴起加速了数据传输的速度&#xff1b;与此同时&#xff0c;智能物联网如智慧家电、可穿戴设备等产品的火热&#xff0c;进一步扩充了数据获取的渠道。不仅仅在网页上、手机和电脑应用上以秒计产生海量数据&#xff0c;智能设备同时也在…

数字孪生智慧能源:风光储一体化能源中心

自“双碳”目标提出以来&#xff0c;我国能源产业不断朝着清洁低碳化、绿色化的方向发展。其中&#xff0c;风能、太阳能等可再生能源在促进全球能源可持续发展、共建清洁美丽世界中被寄予厚望。风能、太阳能具有波动性、间歇性、随机性等特点&#xff0c;主要通过转化为电能再…

基于微信小程序的校园失物招领系统设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

Centos 7 部署SVN服务器

一、安装SVN 1、安装Subversion sudo yum -y install subversion2、验证是否安装成功&#xff08;查看svn版本号&#xff09; svnserve --version二、创建版本库 1、先建立目录&#xff0c;目录位置可修改 mkdir -p /var/svn cd /var/svn2、创建版本库&#xff0c;添加权限…

聊聊KISS(Keep It Simple, Stupid)原则

文章目录 1. 前言2. KISS原则的几项描述3. KISS原则和奥卡姆剃刀原则区别 1. 前言 KISS原则&#xff0c;是Keep It Simple, Stupid的缩写&#xff0c;翻译成中文就是“保持简单&#xff0c;愚蠢的人也能懂”。这是一种鼓励简单设计的设计原则。 KISS原则的主要思想是&#x…

同城信息服务源码 本地生活服务小程序源码

同城信息服务源码 本地生活服务小程序源码 功能介绍&#xff1a; 基本设置&#xff1a;网站参数、安全设置、分站管理、支付设置、操作日志、地区设置、公交地铁、国际区号、清理缓存、模板风格、模块管理、域名管理、底部菜单、消息通知、登录设置 其他设置&#xff1a;关键…

软件测试/测试开发丨python 多态与super 学习笔记

本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26828 python 多态与super 多态的概念 多态&#xff1a;Polymorphism 同名方法呈现多种行为 多态的表现 号 加法&#xff1a;数字 数字拼接&#xff1a;字符串 字符串合…

CentOS 7 安装 Docker 的详细步骤

文章目录 Docker简介1.更新2.安装必要的软件包3.添加Docker仓库4.安装5.安装后的一些常规设置及常用的命令5.1 启动 Docker5.2 Docker 在系统启动时自动运行5.3 运行一个 Hello World 镜像5.4 查看docker运行状态5.5 docker ps5.6 查看docker版本 6.安装种常见的错误错误1:yum-…

Spring实例化源码解析之ComponentScanAnnotationParser(四)

上一章我们分析了ConfigurationClassParser&#xff0c;配置类的解析源码分析。在ComponentScans和ComponentScan注解修饰的候选配置类的解析过程中&#xff0c;我们需要深入的了解一下ComponentScanAnnotationParser的parse执行流程&#xff0c;SpringBoot启动类为什么这么写&…

软件测试面试经验分享,真实面试题

前言 本人普通本科计算机专业&#xff0c;做测试也有3年的时间了&#xff0c;讲下我的经历&#xff0c;我刚毕业就进了一个小自研薪资还不错&#xff0c;有10.5k&#xff08;个人觉得我很优秀&#xff09;&#xff0c;在里面呆了两年&#xff0c;积累了一些的经验和技能&#…