单例设计模式(Singleton)

单例设计模式(Singleton)主要是保证某个类只有一个实例, 从如一个程序要加载资源, 使用ResourceLoader类的Load成员函数来加载资源,

 

当这个类设计好之后, 可能有很多人在同时使用, 如果没有把Load函数只能调用一次写在文档中, 或者是有些人没有看到文档, 就有可能

 

造成资源重复加载, 浪费不必要的内存,甚至可能让程序因内存不足而崩溃。

 

单例设计模式就可以解决这个问题, 把ResourceLoader类的构造函数限制为private, 这样类的使用者就不能直接得到

 

这个类的实例。

 

通过一个public的GetSingleton函数, 让使用者得到类的实例, 这样保证类只有一个实例。

 

1. 通过C++模板机制实现

   

template<typename T>
class Singleton
{
public:
	static T * GetSingletonPtr();
protected:
	Singleton() {}
	Singleton(const Singleton &obj){}
	virtual ~Singleton() {}
	Singleton & operator = (const Singleton &obj){}
private:
	static std::auto_ptr<T> __instance;
};

template<typename T>
std::auto_ptr<T> Singleton<T>::__instance;

template<typename T>
T * Singleton<T>::GetSingletonPtr()
{
	if (__instance.get() == NULL)
		__instance.reset(new T);
	return __instance.get();
}


你可能感兴趣的:(单例设计模式(Singleton))