单例模式简介
单例模式:确保一个类只有一个实例,并提供全局访问点来访问这个唯一实例。
单例模式结构
单例模式结构只包含一个全局访问点来访问该唯一实例,单例模式提供一个静态公有方法getInstance来返回改实例。
代码举例
#ifndef __CSINGLETON_H__
#define __CSINGLETON_H__
#include <iostream>
#include <string.h>
#include <mutex>
class CSingleTon
{
public:
static CSingleTon* GetInstance()
{
if (m_instance == nullptr)
{
//此处加锁是为了多线程安全调用
m_mutex.lock();
if (m_instance == NULL){
printf("创建新的实例\n");
m_instance = new Singleton();
}
m_mutex.unlock();
}
return m_instance;
}
private:
CSingleTon() {}
static CSingleTon* m_instance;
static std::mutex m_mutex;
};
CSingleTon* CSingleTon::instance = nullptr;//静态类型的初始化
std::mutex Singleton::m_mutex;
#endif
通过调用函数GetInstance