单件模式 -- 保证唯一实例.
注意:下面的这个单件模式的实现显然是有问题的,线程安全性不能满足要求。如果想要得到线程安全的Singleton,可以考虑采用静态初始化。
//Singleton.h
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
#include <iostream>
using namespace std;
class Singleton
{
public:
static Singleton* Instance();
static Singleton* GetInstance();
protected:
Singleton();
private:
static Singleton* _instance;
};
#endif //~_SINGLETON_H_
//Singleton.cpp
#include "Singleton.h"
#include <iostream>
using namespace std;
Singleton* Singleton::_instance = 0;
Singleton::Singleton()
{
cout<<"Singleton...."<<endl;
}
Singleton* Singleton::Instance()
{
if (_instance == 0)
{
_instance = new Singleton();
}
return _instance;
}
Singleton* Singleton::GetInstance()
{
return Instance();
}
#include "stdafx.h"
//main.cpp
#include "Singleton.h"
#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{
Singleton* sgn = Singleton::Instance();
// 或者
//Singleton* sgn = Singleton::GetInstance();
return 0;
}