设计模式之 单例模式
2015-07-30 17:48
363 查看
#include <iostream> #include <string> using std::cout; using std::cin; using std::endl; using std::string; /* template<class T, class StaticMutex> class SingleInstance { protected: SingleInstance(void){} virtual ~SingleInstance(void){} T* CreateInstance(void) { if(!pIns_) { mutex_.lock(); if(!pIns_) { pIns_ = new T(); } mutex_.unlock(); } return pIns_; } void destoryInstance() { if(pIns_) { delete pIns_; pIns_ = NULL; } } private: static T *pIns_; StaticMutex mutex_; }; */ template<class T> class SingleInstance { protected: SingleInstance(void){} virtual ~SingleInstance(void){} static T* createInstance(void) { if(!pIns_) { pIns_ = new T(); } return pIns_; } void destoryInstance() { if(pIns_) { delete pIns_; pIns_ = NULL; } } private: static T *pIns_; }; template<typename T> T* SingleInstance<T>::pIns_ = NULL; class Factory: public SingleInstance<Factory> { public: Factory(void){} ~Factory(void){ destoryInstance(); } static Factory* instance(void){ return createInstance(); } void show(){ cout<<"create a factory instance ok"<<endl; } }; int main() { Factory::instance()->show(); return 0; }
相关文章推荐
- Windows批处理:自动检查网络连通性
- mac 安装pillow模块
- FATAL EXCEPTION: GLThread
- 递归函数用mystrlen(char *buf,int N) 实现统计字符串中的第一个空字符前面的字符串长度
- 解决PyQt中从文件读取内容输出到界面乱码的问题
- 既然抓不住,何不送一程!(一篇让数万人开悟的文章)
- 无形的力量,看得见的手
- kindeditor编辑器,图片上传功能齐全
- 有意思的代码--利用系统信号切换日志模式
- mysql分表的3种方法
- 多点触摸+摄像机旋转拉伸学习笔记
- java 读取配置文件
- WI-FI定位算法原理与介绍
- Flume NG简介及配置 1.5.2
- 中天华易业务范围
- 4. CSS id 选择器
- Python进阶之返回函数
- 利用栈实现精制转换c++
- SQL Server 加密功能实例
- mysql create index