单例模式:让对象只存在一个。
方法一:通过全局变量,根据是否已经初始化判断是否已经实例化。但是多个实例化情况下,重复的复制粘贴即可,但是需要重构消除重复代码。
方法二:构造函数私有化,不能通过new实例化,通过public方法实例化。
UML图:
class A
{
private:
static A* a;
A()
{
//构造函数私有,不能通过new实例化
}
public:
static A* GetInstance()
{
lock();//////////////////////
if (a == NULL)
{
a = new A();
}
unlock();////////////////////
return a;
}
static DetroyInstance()
{
if (a != NULL)
{
delete a;
a = NULL;
}
}
};
A* A::a = NULL;
A* test = A::GetInstance();
参考:多线程安全
阅读(491) | 评论(0) | 转发(0) |