设计模式-单例模式

单例模式主要用于单一资源的访问。
下面仅列出比较好的实现方式,该实现方式具有以下特征

  • 支持多线程安全
  • 正常销毁
  • 使用c++实现:锁的部分使用Qt的QMutex

实现

Class NameSingleton

Singleton.h

class Singleton 
{
public:
 static Singleton *GetInstance()
 {
 if(nullptr == singleton_)
 {
 singleton_creat_lock_.lock();
 if(nullptr == singleton_)
 {
 static ConfigData singleton;
 singleton_ = &singleton;
 }
 singleton_creat_lock_.unlock();
 }
 return singleton_;
 }
private:
 static QMutex singleton_creat_lock_;
 static Singleton *singleton_; 
Singleton(){};~Singleton(){}; 

Singleton.cpp

// 注意:一定要初始化成员变量,否则编译时会出现undefined reference to的错误
QMutex Singleton::singleton_creat_lock_;
Singleton *Singleton::singleton_ = nullptr;

你可能感兴趣的:(设计模式-单例模式)