1. 单例模式简介

在一个进程中,一个类仅创建一个唯一的实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。
       主要应用场景有:日志记录,配置管理,线程池,连接池,内存池等。

2. 如何定义一个单例

1. 构造函数私有化
         包括普通构造函数,拷贝构造函数,赋值操作符重载函数,防止出现一个以上的实例。
     2. 使用类的私有静态指针变量指向类的唯一实例
     3. 使用一个公有的静态方法获取该实例

3. 代码实现

class Singleton
{
private:static Singleton* instance;
private:Singleton() {};~Singleton() {};Singleton(const Singleton&);Singleton& operator=(const Singleton&);
public:static Singleton* getInstance() {if(instance == NULL)instance = new Singleton();return instance;}
};// init static member
Singleton* Singleton::instance = NULL;

4. 线程安全

线程安全问题根本原因:两个线程同时调用getInstance(),可能产生两个实例。

一般考虑加锁的方式避免线程安全问题,但加锁比较繁琐,并且稍有不慎仍然可能出问题。

本文从用法上来避免线程安全问题,此方法简单明了,不会出错,适合大部分场景。

  本文的用法如下:

在主线程中事先创建好实列,以后在其他线程中仅仅获取该实例指针进行使用。

c++设计模式之单例模式相关推荐

  1. socket可以写成单例嘛_精读《设计模式 - Singleton 单例模式》

    Singleton(单例模式) Singleton(单例模式)属于创建型模式,提供一种对象获取方式,保证在一定范围内是唯一的. 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 其实单例模 ...

  2. C#设计模式(1)——单例模式

    原文地址:http://www.cnblogs.com/zhili/p/SingletonPatterm.html 一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设 ...

  3. java设计模式之单例模式(七种方法)

    单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个 ...

  4. java单例模式的七种写法_Java设计模式之单例模式的七种写法

    什么是单例模式? 单例模式是一种常见的设计模式,单例模式的写法有很多种,这里主要介绍三种: 懒汉式单例模式.饿汉式单例模式.登记式单例 . 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类 ...

  5. go设计模式之单例模式

    在这里插入图片描述# go设计模式之单例模式 在软件开发时,经常会遇到有些对象需要保证只有一个实例的,那么这种设计模式就应用而生. 定义 单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模 ...

  6. 一篇博客读懂设计模式之---单例模式

    一篇博客读懂设计模式之---单例模式 一.  单例模式 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处 ...

  7. Java 设计模式(3)单例模式

    前言 概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自 ...

  8. socket可以写成单例嘛_精读设计模式 Singleton 单例模式

    Singleton(单例模式) Singleton(单例模式)属于创建型模式,提供一种对象获取方式,保证在一定范围内是唯一的. 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 其实单例模 ...

  9. 设计模式之单例模式——Singleton

                        设计模式之单例模式--Singleton 设计意图: 保证类仅有一个实例,并且可以供应用程序全局使用.为了保证这一点,就需要这个类自己创建自己的对象,并且对外有 ...

  10. 实践GoF的设计模式:单例模式

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:单例模式>,作者: 元闰子. 简述 GoF 对单例模式(Singleton)的定义如下: Ensure a class onl ...

最新文章

  1. php7简短而安全的数组遍历方法
  2. 汇编: 描述内存长度
  3. Java 11都有哪些新特性?
  4. vba 字典_VBA中字典的基础概念及调用方法
  5. access实例_西门子PLC1200组态王跟Access数据库-⑥组态王变量
  6. 用python写网络爬虫 -从零开始 4 用正则表达式 编写链接爬虫
  7. 父元素浮动子元素会浮动吗_为什么quot;overflow:hiddenquot;能清除浮动的影响
  8. css中利用margin来隐藏元素
  9. C++ std::lock_guard 自动加锁、释放锁 原理
  10. 2020年最新人事管理软件排名(建议收藏)!
  11. 计算机网络自顶向下第六章,计算机网络 自顶向下方法 第六章(英文版).ppt
  12. ap6212中串口蓝牙在linux下的使用记录
  13. 利用matlab来求极限
  14. OpenG: 单模型旋转
  15. 勒让德多项式的正交性和归一化
  16. 使用python依次比较两个pcap文件中的每个报文
  17. java心电图_使用原生js+canvas实现模拟心电图
  18. JTAG (三) jtag实例 riscv
  19. 微信小程序转二维码方法分享
  20. 电脑裸妆linux,美妆相机pc版 版本 V5.0.0

热门文章

  1. php取名字的姓,姓名拆分为姓氏和名字的方法[php版]
  2. Anaconda3 2021.05(64bit)安装图文教程
  3. 基于数字孪生的机器人焊接自动编程关键技术
  4. Python txt转pcd(带RGB值,点云)
  5. cocos和Unity3d 图集
  6. xposed 修改通过修改系统返回计步器修改微信运动步数
  7. java 德文转码_web开发中的JAVA字符转码
  8. Ubuntu_硬件与系统基础
  9. NB-IoT与LTE差异
  10. 前端js身份证号码和手机号码格式验证