单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
//
// Singleton模板
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
template <typename T>
struct singleton_default
{
public:
typedef T object_type;
static object_type& instance()
{
static object_type obj;
create_object.do_nothing();
return obj;
}
private:
struct object_creator
{
object_creator() { singleton_default<T>::instance(); }
inline void do_nothing() const {}
};
static object_creator create_object;
singleton_default();
};
template <typename T>
typename singleton_default<T>::object_creator
singleton_default<T>::create_object;
#define INSTANCE(class_name) singleton_default<class_name>::instance()
#endif // _SINGLETON_H_