Singleton模式
来源:互联网 发布:网络信息保密协议书 编辑:程序博客网 时间:2024/06/05 23:48
Singleton模式分为两种模式,懒汉模式和饿汉模式。顾名思义,懒汉模式就是在需要类的对象时再去产生对象,而饿汉模式就是在类初始化时就已经产生了一个类对象,不管我们需不需要这个对象,这个对象自始至终就在那里。
懒汉模式:
优点:可以实现延迟实例化
缺点:多线程环境下需要特殊处理、较饿汉模式有性能问题。
饿汉模式:
优点:不用考虑多线程问题,也有比较好的性能
缺点:不能实现延迟实例化
写法一、只适用于单线程环境懒汉模式
//只适用于单线程的懒汉模式class Singleton1{public: static Singleton1 *getInstance() { if ( instance == NULL ) { instance = new Singleton1(); } return instance; }private: Singleton1() {} static Singleton1 *instance;};Singleton1 *Singleton1::instance = NULL;
写法二、懒汉模式在多线程环境下的几种解决方案
//性能不足的加锁处理class Singleton2{public: static Singleton2 *getInstance() { lock(); if ( instance == NULL ) { instance = new Singleton2(); } unlock(); return instance; }private: Singleton2() {} static Singleton2 *instance;};Singleton2 *Singleton2::instance = NULL;
//最理想的加锁处理 双检锁class Singleton3{public: static Singleton3 *getInstance() { if ( instance == NULL ) { lock(); if ( instance == NULL ) { instance = new Singleton3(); } unlock(); } return instance; }private: Singleton3() {} static Singleton3 *instance;};Singleton3 *Singleton3::instance = NULL;
写法三、饿汉模式
//饿汉模式class Singleton4{public: static Singleton4 *getInstance() { return instance; }private: Singleton4() {} static Singleton4 *instance;};Singleton4 *Singleton4::instance = new Singleton4();
阅读全文
0 0
- Singleton模式
- Singleton模式
- singleton模式
- Singleton模式
- Singleton模式
- Singleton模式
- Singleton模式
- Singleton 模式
- Singleton模式
- Singleton模式
- singleton模式
- Singleton模式
- Singleton 模式
- Singleton 模式
- Singleton 模式
- Singleton模式
- Singleton模式
- Singleton 模式
- 每天一个linux命令(11):nl命令
- 错误解决error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file
- 人脸检测--S3FD: Single Shot Scale-invariant Face Detector
- CodeForces 665C Simple Strings
- tensorflow:常用API-'a'
- Singleton模式
- SpringMVC校验---SpringMVC学习笔记(八)
- zcmu--1880: wjw的火车站
- Android popouwindow弹出动画(利用scale这一属性实现)
- 推荐系统中的冷启动和探索利用问题探讨 (上)
- Android透明度
- tensorflow降噪自动编码器
- 每天一个linux命令(12):more命令
- 数据回显---SpringMVC学习笔记(九)