C++完美实现Singleton模式
2013-10-23 17:14
239 查看
template <class T> class Singleton { public: static inline T& instance() { static T _instance; return _instance; } private: Singleton(void); ~Singleton(void); Singleton(const Singleton<T>&); Singleton<T>& operator= (const Singleton<T> &); }; typedef Singleton<ServiceManger> SSManger; int _tmain(int argc, _TCHAR* argv[]) { SSManger::instance()->Run(); }
把模板类的构造函数放在私有段里了,如果放在protected段里就好得多,因为你的类可以从模板类继承,这样就不再需要你的那个 typedef Singleton<ServiceManger> SSManger;定义了。示例如下:
template <class T>
class Singleton {
public:
static T& instance() {
static T _instance;
return _instance;
}
protected:
Singleton(void) {}
virtual ~Singleton(void) {}
Singleton(const Singleton<T>&); //不实现
Singleton<T>& operator= (const Singleton<T> &); //不实现
};
--------------------------------
下面是一个需要做为单例的类,只需从Singleton继承即可
class Test : public Singleton<Test> {
public:
void foo();
private:
Test();
~Test();
friend class Singleton<Test>;
};
----------------------
这样,别人在使用的时候,只需要写
Test::instance().foo();
而再也不需要写:
Singleton<Test>::instance().foo();
或者
typedef Singleton<Test> STest;
STest::instance().foo();
转自:http://www.cppblog.com/dyj057/archive/2005/09/20/346.html
相关文章推荐
- C++完美实现Singleton模式
- C++完美实现Singleton模式
- C++完美实现Singleton模式
- C++完美实现Singleton模式
- C++完美实现Singleton模式
- C++完美实现Singleton模式
- C++完美实现Singleton模式
- 设计模式C++实现(1)Singleton
- 设计模式C++实现:单例模式(Singleton)
- 用C++实现单例模式3——如何在不使用锁和C++11的情况下,用C++实现线程安全的Singleton
- c++--Singleton单例模式的实现
- Singleton模式的C++实现研究(示例代码)
- Head First设计模式C++实现--第五章:单件(Singleton)模式
- [GoF设计模式]Iterator模式和Singleton模式的C++实现
- Singleton模式的C++实现研究(转载)
- Singleton模式的C++实现研究(示例代码)
- Singleton模式的C++实现研究(转贴)
- c++完美实现单例模式
- Singleton模式的C++实现研究
- 分析模式-计量的C++实现——完美版本