Chinaunix首页 | 论坛 | 博客
  • 博客访问: 68066
  • 博文数量: 16
  • 博客积分: 338
  • 博客等级: 一等列兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-25 01:32
文章分类
文章存档

2011年(16)

我的朋友

分类: C/C++

2011-05-02 01:12:27

  1. // the system configure file must be only one
  2. // so we use Singleton Pattern

  3. #include <iostream>
  4. #include <cassert>
  5. using namespace std;

  6. #define OUT

  7. class CConfigFile
  8. {
  9. // private constructor
  10. private:
  11.     CConfigFile() {}
  12. public:
  13.     // static member function for access static member variable
  14.     static CConfigFile* getSingleton();
  15.     void getConfigData(OUT int& rData) {rData = this->m_nData;}
  16.     void setConfigData(int nData) {this->m_nData = nData;}
  17. private:
  18.     // static member variable
  19.     static CConfigFile* _Instance;
  20.     int m_nData;
  21. };

  22. // Initialize static member variable
  23. CConfigFile* CConfigFile::_Instance = NULL;

  24. // get Singleton here
  25. CConfigFile* CConfigFile::getSingleton()
  26. {
  27.     if (NULL == _Instance)
  28.     {
  29.         _Instance = new CConfigFile;
  30.     }

  31.     return _Instance;
  32. }

  33. int main()
  34. {
  35.     CConfigFile* pConfigFile = CConfigFile::getSingleton();

  36.     pConfigFile->setConfigData(3);

  37.     int nTmp = 0;
  38.     pConfigFile->getConfigData(nTmp);

  39.     assert(3 == nTmp);
  40.     cout << "Work Done!" << endl;

  41.     return 0;
  42. }

 问题

   Singleton  模式是设计模式中最为简单、最为常见、最容易实现,也是最应该

熟悉和掌握的模式。

     Singleton 模式解决问题十分常见,我们怎样去创建一个唯一的变量(对象)?在基于

对象的设计中我们可以通过创建一个全局变量 (对象)来实现,在面向对象和面向过程结合

的设计范式 (如C++中)中,我们也还是可以通过一个全局变量实现这一点。但是当我们遇

到了纯粹的面向对象范式中,这一点可能就只能是通过 Singleton  模式来实现了,可能这也

正是很多公司在招聘Java 开发人员时候经常考察 Singleton 模式的缘故吧。

阅读(1274) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~