单件模式确保一个类只有一个实例,并提供一个全局访问点。
#include <iostream>
#include <string>
using namespace std;
class Singleton
{
public:
static Singleton* GetInstance();
void print();
void write(string strTmp);
private:
Singleton();
static Singleton* instance;
string str;
};
Singleton::Singleton()
{
str="Test";
}
Singleton* Singleton::GetInstance()
{
if (instance==NULL)
instance=new Singleton();
return instance;
}
void Singleton::print()
{
cout<<str<<endl;
}
void Singleton::write(string strTmp)
{
str=strTmp;
}
Singleton * Singleton::instance = NULL;
void main()
{
Singleton* p=Singleton::GetInstance();
Singleton* p2=Singleton::GetInstance();
p->print();
p2->print();
p->write("haha");
p->print();
p2->print();
}以上实现的单件模式还是有缺陷的,不适合多线程环境。

本文介绍了一种常用的设计模式——单件模式,通过一个简单的C++示例解释了如何确保一个类仅有一个实例,并提供了全局访问点。同时也指出了该模式在多线程环境下存在的潜在问题。
1681

被折叠的 条评论
为什么被折叠?



