单例模式
#include<iostream>
using namespace std;
class singleton{
private:
singleton(){
cout<<"produce one"<<endl;
}
static singleton* singPtr;
public:
static singleton* getInstance(){
if(singPtr == nullptr){
singPtr = new singleton;
}
return singPtr;
}
};
singleton* singleton::singPtr = nullptr;
void test1(){
singleton *sing1 = singleton::getInstance();
singleton *sing2 = singleton::getInstance();
if(sing1 == sing2){
cout<<"the same one"<<endl;
}else{
cout<<sing1<<endl;
cout<<sing2<<endl;
}
}
int main(){
test1();
}
应用场景
- 在应用场景中,某类只要求生成一个对象的时候,如一个班中的班长、每个人的身份证号等。
- 当对象需要被共享的场合。由于单例模式只允许创建一个对象,共享该对象可以节省内存,并加快对象访问速度。如 Web 中的配置对象、数据库的连接池等。
- 当某类需要频繁实例化,而创建的对象又频繁被销毁的时候,如多线程的线程池、网络连接池等。
扩展
- 单例模式可扩展为有限的多例(Multitcm)模式,这种模式可生成有限个实例并保存在列表中,客户需要时可随机获取。