qt实现C++设计模式之1_单例模式

发布于 2022-06-02 06:35

1.单例模式介绍

     单例模式是设计模式比较常用的之一,该设计模式目的是在整个应用程序中单例类的实例有且仅有一个。

2.应用场景

     工具类,本身不存储数据,只用于一些通用功能实现。典型案例就是日志类,例如log4cplus
     资源管理,例如打印机管理,同一时刻最好只有一个应用程序操作。

3.实现要点

     构造函数私有,这样你就不能用new来实例化类了。
     拷贝构造函数和=号操作符重载设置为私有,这样就无法进行类的复制。
     类的初始化时间,有所谓的懒汉、饿汗策略。懒汉就是在使用时候进行类的实例化。饿汉就是事先申明好类的实例,调用时直接返回即可。对非实时系统而言都可以。
     线程安全,主要是多线程同时获取实例时,有极小概率会生成两个实例,这个时候就要考虑进行加锁了。为了简化实现,可以使用函数内静态变量来实现。函数内静态变量,在函数第一次调用时才进行初始化,可以从编译角度来实现线程安全。看下汇编代码就会发现函数内静态变量初始化时,是加锁的。

4.代码

#ifndef CSINGLETON_H#define CSINGLETON_H

class CSingleton{public: static CSingleton* getInstance();
private: //构造函数、复制构造函数、=操作符设置为私有 CSingleton(); CSingleton(const CSingleton& c); CSingleton& operator=(const CSingleton& c);};
#endif // CSINGLETON_H
 
#include "csingleton.h"

CSingleton::CSingleton(){
}
CSingleton::CSingleton(const CSingleton &c){
}
CSingleton *CSingleton::getInstance(){ static CSingleton s_instance; return &s_instance;}

CSingleton &CSingleton::operator=(const CSingleton &c){ return *this;}


本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材