保证一个类只有一个实例,并提供一个访问它的全局访问点。
类图:
代码:
template<typename T>
class Singleton
{
public: //缺少访问控制
static T* Instance()
{
if(single==NULL)
{
single=new T();
}
return single;
}
private:
static T* single;
Singleton();
};
template<typename T>
T* Singleton<T>::single=NULL;
class Graduate
{
public:
void print()
{
cout<<"i will be success"<<endl;
}
};
#include "stdafx.h"
#include "Singleton.h"
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"-----------单例模式---------"<<endl;
Graduate *s1= Singleton<Graduate>::Instance();
Graduate *s2 = Singleton<Graduate>::Instance();
if(s1==s2)
{
cout<<"这两个对象是一样的"<<endl;
}
return 0;
}
测试结果:
-----------单例模式---------
这两个对象是一样的
请按任意键继续. . .