單例對象咱們已經用的很是多了,可是每一個類都給實現一個單例,在大型項目中使用是否是很麻煩?因此作一個模板單例來經過這個工廠建立單例,在寫代碼的時候方便不少:c++
template<typename T> class Singleton { public: static T* instance(){ static T instance; return &instance; } private: Singleton(); ~Singleton(); Singleton(const Singleton &); Singleton & operator = (const Singleton &); };
當咱們就要建立任何一個新的單例對象的時候,只須要調用Singleton<calss>::instance就好了:例如已經有一個類A,下面代碼介紹怎麼建立A的單例對象。code
class A{ public: void foo(){//DO FOO} } int main(){ A *a = Singleton<A>::instance(); a->foo(); return 0; }
結合建立一堆全局單例對象的狀況,這單例模板特好用!對象