单例模式
来源:互联网 发布:tiu网络用语什么意思 编辑:程序博客网 时间:2024/06/05 05:21
简介
单例模式:
保证一个类有且只有一个实例,并提供一个访问它的全局访问点。
常用的场景
单例模式常常与工厂模式结合使用,因为工厂只需要创建产品实例就可以了,在多线程的环境下也不会造成任何的冲突,因此只需要一个工厂实例就可以了。
优点:
1.减少了时间和空间的开销(new实例的开销)。
2.提高了封装性,使得外部不易改动实例。
缺点:
1.懒汉式是以时间换空间的方式。
2.饿汉式是以空间换时间的方式。
注意点:
单例模式根据是否是线程安全分为两种:
懒汉式:在类中定义static对象,在instance时判断是否new,多线程时无法保证(pData == NULL)只生成一个对象,线程不安全。
饿汉式:在全局初始化类对象。
测试代码
#include <iostream>#include <assert.h>#include <vector>using namespace std;#include <string>#include <list>//线程锁class Lock{};//懒汉线程不安全class FLHanSinglen{private:FLHanSinglen(){m_pInstance = NULL;};~FLHanSinglen(){};static FLHanSinglen* m_pInstance ;public:FLHanSinglen* getInstance(){if( m_pInstance == NULL ){m_pInstance = new FLHanSinglen();}return m_pInstance;}};//懒汉线程安全class FLAHanSinglen{private:FLAHanSinglen(){m_pInstance = NULL;};~FLAHanSinglen(){};static FLAHanSinglen* m_pInstance ;public:static FLAHanSinglen* getInstance(){if(m_pInstance == NULL){Lock lock;if( m_pInstance == NULL ){m_pInstance = new FLAHanSinglen();}}return m_pInstance;}};//饿汉模式 都是线程安全 无内存泄露class FEHanSinglen{private:FEHanSinglen(){};~FEHanSinglen(){if(m_pInstance != 0){delete m_pInstance;}m_pInstance = 0;};static FEHanSinglen* m_pInstance;public:static FEHanSinglen* getInstance(){return m_pInstance;}}; FEHanSinglen* FEHanSinglen::m_pInstance = new FEHanSinglen();void main(){FEHanSinglen::getInstance();}
阅读全文
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- 你所不知道的21个云服务器的应用实践———云计算综合入门指南
- [Leetcode] 479. Largest Palindrome Product 解题报告
- linux 与openwrt路由器传输文件
- Babel——ES6转换
- Android Studio3.0开发JNI流程------在JNI中输出打印日志
- 单例模式
- 解决MySQL数据库不区分大小写的问题
- 调模数转换器采集板的感悟(不间断更新)
- linux查看硬盘相关信息
- The Little Prince 01
- 细粒度审计
- Oracle Express Edition安装
- java调用oracle存储过程
- 卷积层和池化层学习