单例模式
程序员文章站
2022-04-01 10:16:19
...
单例模式是一种对象创建模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。
类图
为什么使用单例模式?
在应用开发中,常常有如下需求:
*在多线程之间只初始化一个资源。
*在整个程序空间中使用全局变量共享资源。
*在大规模系统中,为了性能考虑,以及需要节省兑现的创建时间等等。
懒汉式
class Singelton{
private:
static Singelton *pnew;
Singelton(){
cout << "Singelton构造函数执行" << endl;
}
public:
static Singelton* getInstance(){
if (pnew == NULL){
pnew = new Singelton();
}
return pnew;
}
static void SingeltonFree(){
if (pnew != NULL){
delete pnew;
pnew = NULL;
}
}
};
Singelton *Singelton::pnew = NULL;//类内静态变量的初始化要放在类外面
调试函数:
int main(void){
Singelton *p1 = Singelton::getInstance();
Singelton *p2 = Singelton::getInstance();
if (p1 == p2){
cout << "同一个对象" << endl;
}
else{
cout << "不是同一个对象" << endl;
}
Singelton::SingeltonFree();
system("pause");
return 0;
}
运行结果:
饿汉式
class Singelton{
private:
static Singelton *pnew;
Singelton(){
cout << "Singelton构造函数执行" << endl;
}
public:
static Singelton* getInstance(){
return pnew;
}
static void SingeltonFree(){
if (pnew != NULL){
delete pnew;
pnew = NULL;
}
}
};
Singelton *Singelton::pnew = new Singelton();//类内静态变量的初始化要放在类外面