You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
/**
|
|
|
|
|
|
* @file WSingletonHandler.h
|
|
|
|
|
|
* @brief ͨ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
|
* @remark ʹ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* 1> <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>࣬<EFBFBD><EFBFBD><EFBFBD>캯<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Ϊprivate<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>캯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD>壬<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* 2> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WSingletonHandler<T>Ϊ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* 3> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ַ<EFBFBD><EFBFBD>ʺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AfxGetT()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>WSingletonHandler<T>::GetInstance()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>WSingletonHandler<T>::GetInstance()<EFBFBD><EFBFBD>ȡָ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* 4> <EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>뱣<EFBFBD>浥<EFBFBD><EFBFBD>ָ<EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @author ɳĮ<EFBFBD><EFBFBD>ѻ
|
|
|
|
|
|
* @time 2009-12-25
|
|
|
|
|
|
*/
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "WGuardLock.h"
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
|
|
namespace wuya
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief ͨ<>õ<EFBFBD><C3B5><EFBFBD>ģʽ*/
|
|
|
|
|
|
template<class T>
|
|
|
|
|
|
class WSingletonHandler : public T
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
/** @brief <20><>ȡΨһ<CEA8><D2BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
|
|
|
|
|
static T* GetInstance()
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_InstancePtr.get() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_InstancePtr.reset(new T);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return m_InstancePtr.get();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
WSingletonHandler(void);
|
|
|
|
|
|
~WSingletonHandler(void);
|
|
|
|
|
|
|
|
|
|
|
|
WSingletonHandler(const WSingletonHandler& singletonHandle);
|
|
|
|
|
|
WSingletonHandler& operator=(const WSingletonHandler& singletonHandle);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
static auto_ptr<T> m_InstancePtr;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
|
|
auto_ptr<T> WSingletonHandler<T>::m_InstancePtr;
|
|
|
|
|
|
|
|
|
|
|
|
}
|