单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点。

类图:

代码:

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;
}

测试结果:

-----------单例模式---------
这两个对象是一样的
请按任意键继续. . .

原文地址:https://www.cnblogs.com/fistao/p/3132739.html