본문 바로가기
programing/Design

Singletone Template

by RedWiz 2017. 2. 1.

//


#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