单例模式看起来挺简单的,但我觉得特别实用,尤其是在线程方面应用广泛;
简单的说,单例模式就是系统中只允许产生这个类的一个实例;
单例模式通过类本身来管理其唯一实例,这种特性提供了解决问题的方法。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问。唯一实例类Singleton在静态成员函数中隐藏创建实例的操作。习惯上把这个成员函数叫做Instance(),它的返回值是唯一实例的指针。
代码:
#include<iostream>
class Singleton{
private:
Singleton(){}
static Singleton* p_instance;
class CGarbo//只是为了释放资源
{
public:
~CGarbo()
{
if(Singleton::p_instance)
delete p_instance;
}
};
static CGarbo garbo;//定义成员为了最后自动调用析构函数
public:
static Singleton* getInstance()
{
if(p_instance==NULL)
{
p_instance=new Singleton();
}
return p_instance;
}
};
int main()
{
Singleton *ps1=Singleton::getInstance();
Singleton *ps2=ps1->getInstance();
return 0;
}
当然,单例模式还可以根据不同的应用场景进行调整,后续进行讨论…