单例模式
来源:互联网 发布:centos ruby 版本升级 编辑:程序博客网 时间:2024/06/09 16:17
#define DECLARE_VIRTUAL_SINGLETON(CLASS)\
public:\
static CLASS* Instance ();\
static void Destroy ();\
protected:\
virtual ~CLASS() {}; \
\
private:\
volatile static CLASS* m_pInstance;
#define IMPLEMENT_VIRTUAL_SINGLETON(CLASS, IMPLCLASS)\
volatile CLASS* CLASS::m_pInstance = NULL;\
\
CLASS* CLASS::Instance ()\
{\
if (NULL == m_pInstance)\
{\
/*ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Static_Object_Lock::instance(), 0));*/\
if (NULL == m_pInstance)\
{\
m_pInstance = new IMPLCLASS;\
/*ACE_OS::*/atexit(CLASS::Destroy);\
}\
}\
\
return (CLASS*)m_pInstance;\
}\
\
void CLASS::Destroy ()\
{\
if (m_pInstance != NULL)\
{\
delete m_pInstance;\
m_pInstance = NULL;\
}\
}
#define DECLARE_SINGLETON(CLASS)\
public:\
static CLASS* Instance ();\
static void Destroy ();\
\
private:\
volatile static CLASS* m_pInstance;\
CLASS();\
CLASS(const CLASS&);\
CLASS& operator= (const CLASS&);\
~CLASS();
#define IMPLEMENT_SINGLETON(CLASS) \
IMPLEMENT_VIRTUAL_SINGLETON(CLASS, CLASS)\
\
CLASS::CLASS(const CLASS&){}\
\
CLASS& CLASS::operator= (const CLASS&) {return *this;}
/*!\}*/
#endif //_SINGLETON_H_
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- Javascript URL 转义字符
- 浏览器缓存实现原理
- 标注点5部分成型图
- 常用的电脑技巧大全
- DWR3 学习笔记 - 第一个DWR3程序
- 单例模式
- TestFlight使用简单说明
- java.io.IOException: No such file or directory
- 慈善组织Raspberry Pi推出25美元电脑,刷新低价记录
- Access Log Sampler读取tomcat log
- csdn学后感言 王安琪
- ibatise 参数 取map中的对象的属性
- ASP.NET中UrlEncode应该用Uri.EscapeDataString()
- I/O上的等待事件 —— db file single write