单件模式及其厂类
来源:互联网 发布:淘宝量子统计没有了 编辑:程序博客网 时间:2024/04/29 12:34
如下是设计模式一书中给出的设计:
class Singleton{public:static Singleton *Instance();int i;protected:Singleton(){}private:static Singleton* _instance;};Singleton* Singleton::_instance = 0;Singleton* Singleton::Instance(){if(_instance == 0){_instance = new Singleton;}return _instance;}
随后介绍的单件模式的厂类,感觉不是很方便。
在此设计上我想用泛型实现:
template <class T>class Singleton{public:static T *Initialize();static void UnInitialize();protected:Singleton(){}private:static T* _instance;};template <class T>T* Singleton<T>::_instance = 0;template <class T>T* Singleton<T>::Initialize(){if(_instance == 0){_instance = new T;}return _instance;}template <class T>void Singleton<T>::UnInitialize(){delete _instance;_instance = NULL;}
接下来是测试代码:
class A{public:int m;~A(){cout<<"A end"<<endl;}};class B{public:int func();private:int k;};int B::func(){k = 2;return k;}int _tmain(int argc, _TCHAR* argv[]){//Singleton *ton = Singleton::Instance();//ton->i = 1;//Singleton *ton1 = Singleton::Instance();//cout<<ton1->i<<endl;A *ton = Singleton<A>::Initialize();ton->m = 1;cout<<ton->m<<endl;//Singleton<A>::UnInitialize();A *ton1 = Singleton<A>::Initialize();//ton->m = 2;cout<<ton1->m<<endl;Singleton<A>::UnInitialize();B *ton2 = Singleton<B>::Initialize();cout<<ton2->func()<<endl;Singleton<B>::UnInitialize();return 0;}
- 单件模式及其厂类
- 【模式】单件模式及其多线程版本
- 【模式】单件模式及其多线程版本
- 单件模式基类
- c++单件实例模式的实现 及其多个单件子类
- FishiGUI:全局变量和单件模式及其内存释放
- 创建单件模式的Logger类
- 简单的单件模式类(C#)
- 单件模式的基类,C++
- 单件模式
- 单件模式
- 设计模式-单件
- singleton单件模式
- Singleton (单件模式)
- 单件模式(Singleton)
- 一番话:单件模式
- 单件模式
- 单件模式
- Deep Learning (Python, C/C++, Java) matlab
- ios应用内跳转到appstore里评分
- mysql慢日志 :slow query log 分析数据
- JavaScript 高淇讲解的代码(二)
- 高仿qq聊天界面
- 单件模式及其厂类
- ddd
- 程序设计应知道的那些事儿
- hdu 4515——小Q系列故事——世界上最遥远的距离
- Linux下通过sh脚本执行jar文件
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- mysqlsla的安装与使用
- AOP 那点事儿
- iOS Assembly Tutorial: Understanding ARM