//
#pragma once
template<typename T>
class CSingletone
{
private:
static T* m_pInstance;
public:
static T* GetInstance();
static void Release();
protected:
CSingletone() {}
virtual ~CSingletone() {}
};
template<typename T>
T* CSingletone<T>::m_pInstance = nullptr;
template<typename T>
T* CSingletone<T>::GetInstance()
{
if (m_pInstance == nullptr)
m_pInstance = new T;
return m_pInstance;
}
template<typename T>
void CSingletone<T>::Release()
{
if (m_pInstance != nullptr)
delete m_pInstance;
m_pInstance = nullptr;
}
-> 템플릿 클래스를 상속 받아서 이용함
-> 클래스 내부에 싱글톤을 넣는 방법에 비해 짧고 매크로를 이용하는 것보다 안정적(?)
-> 상속 받은 생성자를 객체화 할 수 있어서 다른 면에서 위험
-> 템플릿 상속에 의한 비대화 주의
-> DLL 만들때 타입 초기화를 명시를 해주어야 함 -_-;;
'programing > Design' 카테고리의 다른 글
Observer Pattern (0) | 2017.04.21 |
---|