保证一个类只有一个实例,并提供一个访问它的全局访问点。
类图:
代码:
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; }
测试结果:
-----------单例模式---------
这两个对象是一样的
请按任意键继续. . .