单例模式:保证一个类提供且仅提供一实例,并提供一个访问它的全局访问点。
场景:
1.当类只能有一个实例并且客户可以从一个公共的接口访问到实例;
2.当这个唯一的实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例。
#include <stdio.h>
//线程安全的创建单例-恶汉式
class MakeSure {
private:
MakeSure() {
}
static MakeSure* _instance;
public:
~MakeSure() {
}
static MakeSure* getInstance() {
return _instance;
}
};
MakeSure*MakeSure::_instance = new MakeSure;
//
//懒汉式
class MakeOne {
private:
MakeOne() {
}
static MakeOne* _instance;
public:
static MakeOne* getInstance() {
if(_instance == nullptr) {
_instance = new MakeOne;
}
return _instance;
}
};
MakeOne*MakeOne:: _instance = nullptr;
int main() {
return 0;
}
两种创建单例对象的方式:饿汉式:当成 类被加载的时候,这个类就会被实例化,虽然没有被使用但是会占用内存,由于是一开始就会被实例化了,所以这个线程安全的。懒汉式:只有这个类在被调用的时候才会创建,若是多线程同时使用,就会考虑线程安全的为题。