c++设计模式:单例模式
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++设计模式:单例模式相关推荐
- Python设计模式-单例模式
Python设计模式-单例模式 基于Python3.5.2,代码如下 #coding:utf-8 import threading import timeclass Singleton(object) ...
- Android设计模式——单例模式(Singleton)
二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元 ...
- 【学习笔记】ABAP OOD设计模式 - 单例模式
ABAP OOD设计模式 - 单例模式 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 单例模式(Singleton Pattern)是常用的且较为简单的软件设计模式 ...
- Go 语言实现 23 种设计模式 单例模式
Go 语言实现 23 种设计模式 单例模式 单例模式 单例模式是一种常用的软件设计模式,在使用过程中,单例对象的类只有一个实例.使用单例模式,1 可以节省内存等资源,例如windows操作系统的资源管 ...
- java singleton inner class_Java面向对象设计模式-单例模式
Java面向对象设计模式-单例模式 2020-05-28 589 0 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点,有多重实现方式. 一.饿汉式单例模式,构造方法私有化,在加载类Sin ...
- Java开发中常用的设计模式-单例模式
单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式. Java开发中常用的设计模式-单例模式 单例模式有3个特点: 单例类只有一个实例对象: 该单例对象必须 ...
- 炒冷饭系列:设计模式 单例模式
2019独角兽企业重金招聘Python工程师标准>>> 炒冷饭系列:设计模式 单例模式 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆 ...
- 设计模式-单例模式-注册式单例模式-枚举式单例模式和容器式单例模式在Java中的使用示例
场景 设计模式-单例模式-饿汉式单例模式.懒汉式单例模式.静态内部类在Java中的使用示例: 设计模式-单例模式-饿汉式单例模式.懒汉式单例模式.静态内部类在Java中的使用示例_霸道流氓气质的博客- ...
- 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)
创建型设计模式 单例模式(Singleton Pattern) 单例模式介绍 代码演示 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程安全,同步方法) 懒汉式(线程安全, ...
- 小视频源码,设计模式单例模式
小视频源码,设计模式单例模式实现的相关代码 .一,单线程时候推荐 /*** Created by Shinelon on 2018/10/11.* 单利模式 懒汉式 -->单线程推荐使用*/pu ...
最新文章
- 机器学习类别/标称(categorical)数据处理:目标编码(target encoding)
- ROM,RAM,DRAM,SDRAM,SRAM
- shutdown()函数:优雅地断开TCP连接
- java将两个区间范围合并_Java如何将若干时间区间进行合并的方法步骤
- 字符串拼接成insert语句[简单记录]
- 极光推送java demo_极光推送- 3 分钟 Demo - 极光文档
- sql 基础--mysql 5
- Python | 这是过七夕吗?这是趁机学习一下下,就一下~~
- WINDOWS2003自动开关机的实现
- 小米笔试题--数组移动
- java filter重定向_Java Filter(过滤器)——重定向
- Scala简介与Scala的下载安装
- java opencv 人脸相似度_java+opencv实现人脸识别程序记录
- 计算机创造奇迹的英语作文,大学英语作文:创造奇迹-Creating-Miracle.docx
- db2 windows linux,Migrate DB2 v9 on windows to DB2 v10.5 on linux
- SND: 项目发布时Owning ClassInfo is null for property: private问题原因排查与解决
- 放开二妻你会拼命一点儿工作么|独秀日记
- web前端代码开发工具_Web开发人员的有用代码比较工具
- QGIS官网安装包下载与安装
- CCNP学多长时间就行了?