单例模式
来源:互联网 发布:mac移除应用 编辑:程序博客网 时间:2024/06/16 02:17
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。
当例模式一般分为两种,一种是饿汉式单例,采取静态初始化的方式,它是由类一加载就实例化的对象,所以要提前占用系统资源。
class final Singleton{ private: Singleton(){};//构造函数声明为private,让外界无法利用new创建实例。 static Singleton singleton; public: Singleton* GetInstance() { return singleton; }}
饿汉式单例模式采用的是用空间换时间的方式。
另外一种是懒汉式单例:
class Singleton{ private: static Singleton *instance; Singleton(){}; public: static Singleton *GetInstance() { if(instance==NULL) instance=new Singleton(); return instance; }}
懒汉式单例除了可以生成唯一实例之外,还可以严格的控制客户怎样访问以及何时访问,是一种用时间换空间的方式。
懒汉式单例模式无法保证线程安全性,调用GetInstance()可能生成多个实例。因此在多线程中需要进行加锁保护。
class Singleton { private: static Singleton* m_instance; Singleton(){} public: static Singleton* getInstance(); }; Singleton* Singleton::getInstance() { if(NULL == m_instance) { lock(); if(NULL == m_instance) { m_instance = new Singleton; } unlock(); } return m_instance; }
阅读全文
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- 图像放缩中最近邻插值和双线性插值的基本原理
- 2017年JavaScript框架---Top5
- python路径相关的函数os.listdir(dirname):列出dirname下的目录和文件
- mysql技巧之数据去重并记录总数
- demo-rgbd论文解析+代码分析(一)
- 单例模式
- Android Drawable 对象使用
- AOJ-problem-805
- http://my.csdn.net/qq_27229113/album/show/323629
- TensorFlow学习经验
- 关于对Node.js的“单线程非阻塞异步I/O”特点的个人理解
- Android studio NDK笔记2-JNI的数据类型
- python的安装和pip框架中requests的安装
- sublime与Atom比较