1.设计思想:

  单例模式,顾名思义,即一个类只有一个实例对象。C++一般的方法是将构造函数、拷贝构造函数以及赋值操作符函数声明为private级别,从而阻止用户实例化一个类。那么,如何才能获得该类的对象呢?这时,需要类提供一个public&static的方法,通过该方法获得这个类唯一的一个实例化对象。这就是单例模式基本的一个思想。

2.分类:

  1).懒汉式:用的时候才加载,在类的public,getInstance方法中创建对象,场景就是可能有不用的情况,需要通过手动加锁实现线程安全。

  2).饿汉式:该实例对象需要存储在内存的全局数据区,故使用static修饰,程序开始时,全局变量就会初始化。场景就是肯定会实例化,本身就是线程安全。

 1.经典懒汉模式:(new)

class singleton
{
protected:singleton(){pthread_mutex_init(&mutex);}
private:static singleton* p;
public:static pthread_mutex_t mutex;static singleton* initance();
};pthread_mutex_t singleton::mutex;
singleton* singleton::p = NULL;
singleton* singleton::initance()
{if (p == NULL){pthread_mutex_lock(&mutex);if (p == NULL)p = new singleton();pthread_mutex_unlock(&mutex);}return p;
}

2.懒汉模式(静态变量)

class singleton
{
protected:singleton(){pthread_mutex_init(&mutex);}
public:static pthread_mutex_t mutex;static singleton* initance();int a;
};pthread_mutex_t singleton::mutex;
singleton* singleton::initance()
{pthread_mutex_lock(&mutex);static singleton obj;pthread_mutex_unlock(&mutex);return &obj;
}

3.饿汉模式

class singleton
{
protected:singleton(){}
private:static singleton* p;
public:static singleton* initance();
};
singleton* singleton::p = new singleton;
singleton* singleton::initance()
{return p;
}

  

转载于:https://www.cnblogs.com/mcy0808/p/10831575.html

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

  1. Python设计模式-单例模式

    Python设计模式-单例模式 基于Python3.5.2,代码如下 #coding:utf-8 import threading import timeclass Singleton(object) ...

  2. Android设计模式——单例模式(Singleton)

    二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元 ...

  3. 【学习笔记】ABAP OOD设计模式 - 单例模式

    ABAP OOD设计模式 - 单例模式 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 单例模式(Singleton Pattern)是常用的且较为简单的软件设计模式 ...

  4. Go 语言实现 23 种设计模式 单例模式

    Go 语言实现 23 种设计模式 单例模式 单例模式 单例模式是一种常用的软件设计模式,在使用过程中,单例对象的类只有一个实例.使用单例模式,1 可以节省内存等资源,例如windows操作系统的资源管 ...

  5. java singleton inner class_Java面向对象设计模式-单例模式

    Java面向对象设计模式-单例模式 2020-05-28 589 0 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点,有多重实现方式. 一.饿汉式单例模式,构造方法私有化,在加载类Sin ...

  6. Java开发中常用的设计模式-单例模式

    单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式. Java开发中常用的设计模式-单例模式 单例模式有3个特点: 单例类只有一个实例对象: 该单例对象必须 ...

  7. 炒冷饭系列:设计模式 单例模式

    2019独角兽企业重金招聘Python工程师标准>>> 炒冷饭系列:设计模式 单例模式 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆 ...

  8. 设计模式-单例模式-注册式单例模式-枚举式单例模式和容器式单例模式在Java中的使用示例

    场景 设计模式-单例模式-饿汉式单例模式.懒汉式单例模式.静态内部类在Java中的使用示例: 设计模式-单例模式-饿汉式单例模式.懒汉式单例模式.静态内部类在Java中的使用示例_霸道流氓气质的博客- ...

  9. 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)

    创建型设计模式 单例模式(Singleton Pattern) 单例模式介绍 代码演示 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程安全,同步方法) 懒汉式(线程安全, ...

  10. 小视频源码,设计模式单例模式

    小视频源码,设计模式单例模式实现的相关代码 .一,单线程时候推荐 /*** Created by Shinelon on 2018/10/11.* 单利模式 懒汉式 -->单线程推荐使用*/pu ...

最新文章

  1. 机器学习类别/标称(categorical)数据处理:目标编码(target encoding)
  2. ROM,RAM,DRAM,SDRAM,SRAM
  3. shutdown()函数:优雅地断开TCP连接
  4. java将两个区间范围合并_Java如何将若干时间区间进行合并的方法步骤
  5. 字符串拼接成insert语句[简单记录]
  6. 极光推送java demo_极光推送- 3 分钟 Demo - 极光文档
  7. sql 基础--mysql 5
  8. Python | 这是过七夕吗?这是趁机学习一下下,就一下~~
  9. WINDOWS2003自动开关机的实现
  10. 小米笔试题--数组移动
  11. java filter重定向_Java Filter(过滤器)——重定向
  12. Scala简介与Scala的下载安装
  13. java opencv 人脸相似度_java+opencv实现人脸识别程序记录
  14. 计算机创造奇迹的英语作文,大学英语作文:创造奇迹-Creating-Miracle.docx
  15. db2 windows linux,Migrate DB2 v9 on windows to DB2 v10.5 on linux
  16. SND: 项目发布时Owning ClassInfo is null for property: private问题原因排查与解决
  17. 放开二妻你会拼命一点儿工作么|独秀日记
  18. web前端代码开发工具_Web开发人员的有用代码比较工具
  19. QGIS官网安装包下载与安装
  20. CCNP学多长时间就行了?

热门文章

  1. 集群节点数和分片数关系_完全二叉树的节点数,你真的会算吗?
  2. linux lamp架构部署,Centos7部署LAMP平台之架构之路
  3. 服务器向用户返回的状态码,常用的有:
  4. liferay 定时调度器用法
  5. ElasticSearch第二天
  6. 浅谈JavaScript、ES5、ES6
  7. python编译后的pyd爆破
  8. 干活|常见WAF拦截页面总结
  9. js检测开发者工具Devtools是否打开防调试
  10. Squid-4.1(最新)安装及构建代理服务器