单件模式(Singleton Pattern)之C++实现

单件模式确保一个类只有一个实例,并提供一个全局访问点。

 

[cpp][/cpp] view plaincopy

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. class Singleton
  5. {
  6. public:
  7.     static Singleton* GetInstance();
  8.     void print();
  9.     void write(string strTmp);
  10. private:
  11.     Singleton();
  12.     static Singleton* instance;
  13.     string str;
  14. };
  15. Singleton::Singleton()
  16. {
  17.     str=”Test”;
  18. }
  19. Singleton* Singleton::GetInstance()
  20. {
  21.     if (instance==NULL)
  22.         instance=new Singleton();
  23.     return instance;
  24. }
  25. void Singleton::print()
  26. {
  27.     cout<<str<<endl;
  28. }
  29. void Singleton::write(string strTmp)
  30. {
  31.     str=strTmp;
  32. }
  33. Singleton * Singleton::instance = NULL;
  34. void main()
  35. {
  36.     Singleton* p=Singleton::GetInstance();
  37.     Singleton* p2=Singleton::GetInstance();
  38.     p->print();
  39.     p2->print();
  40.     p->write(“haha”);
  41.     p->print();
  42.     p2->print();
  43. }

以上实现的单件模式还是有缺陷的,不适合多线程环境。

标签