单例:
简单的单列
class singleton{
private:
singleton(){};
static singleton*instance;
public :
static singleton*GetInstance()
{
if(NULL == instance)
{
instance = new single();
}
return instance;
}
}
线程模式的单例
懒汉模式:用到时候才调用,多线程模式,为了不影响相互单例的创建,以时间换取空间。
class singleton()
{
private:
singleton()
static singleton* Instance;
public:
static singleton* GetInstance()
{
if(NULL == Instance)
{
lock();
Instance = new singleton();
unlock();
}
return instance;
}
}
饿汉模式:
饿汉模式:很饿,所以甚至在main之前就已经申请空间,利用空间换时间
class singleton{
private:
singleton(){}
static singleton*instance;
public:
static singleton*GetInstance()
{
return instance;
}
}
static singleton*singleton::instance = new singleton();
//饿汉模式二:
class singleton{
private:
singleton(){}
public:
static singleton* GetInstance()
{
static singleton Instance;
return &instance;
}
}