单例对象咱们已经用的很是多了,可是每一个类都给实现一个单例,在大型项目中使用是否是很麻烦?因此作一个模板单例来经过这个工厂建立单例,在写代码的时候方便不少: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; }
结合建立一堆全局单例对象的状况,这单例模板特好用!对象