#include <iostream>
using namespace std;
/*
* 1. 类的构造器不公开
* 2. 类进行动态构造
* 3. 只有一个全局入口点(指向唯一对象实例的指针),通过该入口点进行实例控制。
*/
class Singleton
{
private:
static bool instanceFlag;
static Singleton *single;
int id;
Singleton(int id)
{
this->id = id;
}
public:
static Singleton* getInstance(int id);
void method();
~Singleton()
{
instanceFlag = false;
}
};
bool Singleton::instanceFlag = false; /* 静态成员变量初始化的方法,包含空间申请,静态成员和其他成员的存储空间的差别? */
Singleton* Singleton::single = NULL;
Singleton* Singleton::getInstance(int id)
{
if(NULL == instanceFlag)
{
single = new Singleton(id);
instanceFlag = true;
return single;
}
else
{
return single;
}
}
void Singleton::method()
{
cout << "object id: " << id << endl;
}
int main()
{
Singleton *sc1,*sc2;
sc1 = Singleton::getInstance(1);
sc1->method();
sc2 = Singleton::getInstance(2);
sc2->method();
return 0;
}
singleton模式学习
最新推荐文章于 2024-09-15 22:03:14 发布