Singleton

最近ぱせりが使ってるシングルトン


template
struct Singleton
{
typedef T SingletonType;
static T& Instance()
{
if(!mInstance)
{
mInstance = new T();
::atexit(DestroySingleton);
}
return *mInstance;
}
private:
static void DestroySingleton()
{
delete mInstance;
mInstance=0;
}
Singleton();
Singleton(const Singleton&);
Singleton& operator =(const Singleton&);
static T* mInstance;
};

template
T* Singleton::mInstance;

ああー、マルチスレッド対応さえもしてなくて
生成はCreateNewのみ、破棄はatexitのみ。
かなりシンプルです。
実は最近「ある制限の下で単純化できるコード」が大好きです。
汎用性を犠牲にして可読性や分かりやすさを優先してます。
こういう考えに至ったのは、結局いろんな機能つけても
決まった使い方しかしてないってのに気づいたからです。

わざわざメンテ範囲ふやすことないですからねー