1、单列模式
实现常用步骤
(1)构造函数私有化
(2)提供一个全局的静态方法
(3)在类中定义一个静态指针,指向本来的变量的静态变量指针
//懒汉模式
class Singelton
{
public:
static Singelton* getInstace()
{
if (sl==NULL)
{
sl = new Singelton();
}
return sl;
}
static void freeInstance()
{
if (sl!=NULL)
{
delete sl;
sl = NULL;
cout << "free" << endl;
}
}
private:
static Singelton * sl;
Singelton()
{
cout << "构造函数" << endl;
}
};
Singelton * Singelton::sl = NULL;
void test01()
{
Singelton * s1 = Singelton::getInstace();
Singelton * s2 = Singelton::getInstace();
if (s2==s1)
{
cout << "是同一个对象" << endl;
}
else
{
cout << "不是同一个对象" << endl;
}
Singelton::freeInstance();
cout << "------------------------------------" << endl;
}
//饿汉模式
class Singelton
{
public:
static Singelton* getInstace()
{
return sl;
}
static void freeInstance()
{
if (sl != NULL)
{
delete sl;
sl = NULL;
cout << "free" << endl;
}
}
private:
static Singelton * sl;
Singelton()
{
cout << "构造函数" << endl;
}
};
// 不管三七二十一 new出来
Singelton * Singelton::sl = new Singelton();
//相当于一个全局变量,在全局区
void test01()
{
Singelton * s1 = Singelton::getInstace();
Singelton * s2 = Singelton::getInstace();
if (s2 == s1)
{
cout << "是同一个对象" << endl;
}
else
{
cout << "不是同一个对象" << endl;
}
Singelton::freeInstance();
cout << "------------------------------------" << endl;
}