文件“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_