[gpg 스터디] 1.3 자동적인 단일체 유틸리티

5
GPG 1.3 자동적인 단일체 유틸리티 P. 78 - 82 NHN NEXT 남현욱

Upload: sehyeon-nam

Post on 24-Dec-2014

61 views

Category:

Software


4 download

DESCRIPTION

지난 "GPG 1.1 디자인 패턴"시간에 소개했던 싱글톤 패턴, 좀 더 쉽고 확장성 높게 사용할 순 없을까요? NHN NEXT 남현욱님의 발표입니다.

TRANSCRIPT

Page 1: [GPG 스터디] 1.3 자동적인 단일체 유틸리티

GPG1.3 자동적인 단일체 유틸리티

P. 78 - 82

NHN NEXT남현욱

Page 2: [GPG 스터디] 1.3 자동적인 단일체 유틸리티

자동적인 단일체 유틸리티

단일체 패턴singleton pattern

의도 해당 클래스의 인스턴스가 오직 하나 뿐임을 보장하고, 이에 대한 전역적인 접근점을 제공하기 위함.

구조Singleton

static GetInstance()SingletonOperation()GetSingletonData()

static uniqueInstancesingletonData

return uniqueInstancepublic

private

Page 3: [GPG 스터디] 1.3 자동적인 단일체 유틸리티

자동적인 단일체 유틸리티

단일체 템플릿단일체 클래스는 굉장히 자주 쓰인다. 그런데 이걸 매번 똑같은 형식으로 만들기 귀찮으니, 그냥 템플릿으로 만들어 버리자.

template<typename T>class Singleton{public: static T* GetInstance() { if (m_pInstance == nullptr) m_pInstance = new T; return m_pInstance; } void ReleaseInstance() { if (m_pInstance != nullptr) { delete m_pInstance; m_pInstance = nullptr; } }

private: static T* m_pInstance;};

template<typename T> T* Singleton <T>::m_pInstance = nullptr;

Page 4: [GPG 스터디] 1.3 자동적인 단일체 유틸리티

자동적인 단일체 유틸리티

단일체 템플릿실제 사용 예

class TestClass : public Singleton<TestClass>{public: void print() { printf(“TEST~~~”); }private: TestClass(); ~TestClass();};

int main(){ TestClass::GetInstance()->print();}

Page 5: [GPG 스터디] 1.3 자동적인 단일체 유틸리티

자동적인 단일체 유틸리티

‘ GPG를 공부하자’ 페이스북 페이지https://www.facebook.com/gpgstudygogo