文件“F_DesignMode_Singleton.h”
#ifndef F_DESIGN_MODE_SINGLETON_20171027_KJASHD_H_
#define F_DESIGN_MODE_SINGLETON_20171027_KJASHD_H_
/*
设计模式: Singleton 单例模式
单例模式,又称单件模式。
定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
*/
#if 1
class Singleton
{
public:
static Singleton* GetSingletonInstance();
private:
Singleton();
Singleton(const Singleton* Other);
Singleton operator= (const Singleton& Other);
~Singleton();
public:
static Singleton *m_pSingleton;
};
#endif
#endif//F_DESIGN_MODE_SINGLETON_20171027_KJASHD_H_
文件“F_DesignMode_Singleton.cpp”
#include "stdafx.h"
#include "afxmt.h"
#include "F_DesignMode_Singleton.h"
CMutex g_Mutex;
Singleton* Singleton::m_pSingleton = Singleton::GetSingletonInstance();
Singleton* Singleton::GetSingletonInstance()
{
if (m_pSingleton == NULL)
{
g_Mutex.Lock();
if (m_pSingleton == NULL)
{
m_pSingleton = new Singleton();
}
g_Mutex.Unlock();
}
return m_pSingleton;
}
Singleton::Singleton()
{}
文件“F_DesignMode_Singleton_Test.h”
#ifndef F_DESIGN_MODE_SINGLETON_TEST_20171027_KJASHD_H_
#define F_DESIGN_MODE_SINGLETON_TEST_20171027_KJASHD_H_
#include "F_DesignMode_Singleton.h"
void F_DesignMode_Singleton_Test()
{
Singleton *pSingletonA = Singleton::GetSingletonInstance();
Singleton *pSingletonB = Singleton::GetSingletonInstance();
if (pSingletonA == pSingletonB)
{
TRACE("pSingletonA == pSingletonB");
}
}
#endif//F_DESIGN_MODE_SINGLETON_TEST_20171027_KJASHD_H_