目录:
一.概念
单例模式属于创建型模式
----一种非常典型的设计模式
二.应用场景
1.一个类只能实例化一个对象 (单一的访问方式)
2.一份资源只能被加载一次 (类似于计数器,只可加载一次)
三.分类
(我们这里只对于懒汉模式和饿汉模式进行理解,后期理解到后面三个再对于单例模式补充)
1.饿汉模式
//饿汉方式:
template<class T>
class Singleton{
private:
static T _data; //1.静态资源进行修饰
Singleton(){} //2.构造函数私有化
public:
T *GetInstance(){
return &_data;
}
};
2.懒汉模式
//懒汉模式
template<class T>
class Singleton{
private:
volatile static T* _data; //1.定义对象的指针T*
//2.static修饰变量
//3.volatile修饰
static std::mutex _mutex;
public:
volatile static T* GetInstance(){
if (_data == NULL){ //5.二次检测
_mutex.lock(); //4.加锁保护-线程安全
if (_data == NULL){ _data = new T(); }
_mutex.unlock();//解锁
}
return _data;
}
};
注意对这里几个条件的理解,注意文字的理解到位.