代码如下:
#define PATTERN_SINGLETON_DECLARE(classname) \
public: \
static classname* Instance(); \
static void Close(); \
private: \
static classname* m_pSingletion;
#define PATTERN_SINGLETON_IMPLEMENT(classname) \
classname* classname::m_pSingletion = NULL; \
classname* classname::Instance() \
{ \
if (m_pSingletion == NULL) \
{ \
m_pSingletion = new classname; \
} \
return m_pSingletion; \
} \
void classname::Close() \
{ \
if(m_pSingletion != NULL) \
{ \
delete m_pSingletion; \
m_pSingletion = NULL; \
} \
}
#define SINGLETON_SUBCLASSING_DECLARE(classname) \
public: \
static classname* Instance(); \
static void SetInstance(classname* pClassName); \
static void Close(); \
private: \
static classname* m_pSingletion; \
#define SINGLETON_SUBCLASSINGIMPLEMENT(classname) \
classname* classname::m pSingletion = NULL; \
classname* classname::Instance() \
{ \
QASSERT(m pSingletion != NULL) \
return m pSingletion; \
} \
void classname::SetInstance(classname* pClassName) \
{ \
m_pSingletion =pClassName; \
} \
void classname::Close() \
{ \
if(m_pSingletion != NULL) \
{ \
delete m pSingletion; \
m_pSingletion = NULL; \
} \
}