- // the system configure file must be only one
- // so we use Singleton Pattern
- #include <iostream>
- #include <cassert>
- using namespace std;
- #define OUT
- class CConfigFile
- {
- // private constructor
- private:
- CConfigFile() {}
- public:
- // static member function for access static member variable
- static CConfigFile* getSingleton();
- void getConfigData(OUT int& rData) {rData = this->m_nData;}
- void setConfigData(int nData) {this->m_nData = nData;}
- private:
- // static member variable
- static CConfigFile* _Instance;
- int m_nData;
- };
- // Initialize static member variable
- CConfigFile* CConfigFile::_Instance = NULL;
- // get Singleton here
- CConfigFile* CConfigFile::getSingleton()
- {
- if (NULL == _Instance)
- {
- _Instance = new CConfigFile;
- }
- return _Instance;
- }
- int main()
- {
- CConfigFile* pConfigFile = CConfigFile::getSingleton();
- pConfigFile->setConfigData(3);
- int nTmp = 0;
- pConfigFile->getConfigData(nTmp);
- assert(3 == nTmp);
- cout << "Work Done!" << endl;
- return 0;
- }
问题
Singleton 模式是设计模式中最为简单、最为常见、最容易实现,也是最应该
熟悉和掌握的模式。
Singleton 模式解决问题十分常见,我们怎样去创建一个唯一的变量(对象)?在基于
对象的设计中我们可以通过创建一个全局变量 (对象)来实现,在面向对象和面向过程结合
的设计范式 (如C++中)中,我们也还是可以通过一个全局变量实现这一点。但是当我们遇
到了纯粹的面向对象范式中,这一点可能就只能是通过 Singleton 模式来实现了,可能这也
正是很多公司在招聘Java 开发人员时候经常考察 Singleton 模式的缘故吧。
阅读(1274) | 评论(0) | 转发(0) |