SlideShare a Scribd company logo
1 of 5
Download to read offline
GPG 
1.3 자동적인 단일체 유틸리티 
P. 78 - 82 
NHN NEXT 
남현욱
자동적인 단일체 유틸리티 
단일체 패턴singleton pattern 
의도 
해당 클래스의 인스턴스가 오직 하나 뿐임을 보장하고, 이에 대한 전역적인 접근점을 제공하기 위함. 
구조 
Singleton 
static GetInstance() 
SingletonOperation() 
GetSingletonData() 
static uniqueInstance 
singletonData 
return uniqueInstance 
public 
private
자동적인 단일체 유틸리티 
단일체 템플릿 
단일체 클래스는 굉장히 자주 쓰인다. 그런데 이걸 매번 똑같은 형식으로 만들기 귀찮으니, 그냥 
템플릿으로 만들어 버리자. 
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;
자동적인 단일체 유틸리티 
단일체 템플릿 
실제 사용 예 
class TestClass : public Singleton<TestClass> 
{ 
public: 
void print() 
{ 
printf(“TEST~~~”); 
} 
private: 
TestClass(); 
~TestClass(); 
}; 
int main() 
{ 
TestClass::GetInstance()->print(); 
}
자동적인 단일체 유틸리티 
끝 
‘ GPG를 공부하자’ 페이스북 페이지 
https://www.facebook.com/gpgstudygogo

More Related Content

What's hot

[Swift] Generics
[Swift] Generics[Swift] Generics
[Swift] GenericsBill Kim
 
[Swift] Functions
[Swift] Functions[Swift] Functions
[Swift] FunctionsBill Kim
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부quxn6
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)익성 조
 
C++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAPC++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAPJae Woo Woo
 
반응형프로그래밍입문 2회 20161010
반응형프로그래밍입문 2회 20161010반응형프로그래밍입문 2회 20161010
반응형프로그래밍입문 2회 20161010DongHwan Yu
 
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 Sehyeon Nam
 

What's hot (9)

[Swift] Generics
[Swift] Generics[Swift] Generics
[Swift] Generics
 
[Swift] Functions
[Swift] Functions[Swift] Functions
[Swift] Functions
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
C++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAPC++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAP
 
반응형프로그래밍입문 2회 20161010
반응형프로그래밍입문 2회 20161010반응형프로그래밍입문 2회 20161010
반응형프로그래밍입문 2회 20161010
 
STL study (skyLab)
STL study (skyLab)STL study (skyLab)
STL study (skyLab)
 
ES6-02
ES6-02ES6-02
ES6-02
 
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
 

Viewers also liked

[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)SeungMin Yang
 
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)SeungMin Yang
 
Gpg 1.13 ~ 1.14
Gpg 1.13 ~ 1.14Gpg 1.13 ~ 1.14
Gpg 1.13 ~ 1.14sj k
 
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 [GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 Sehyeon Nam
 
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)SeungMin Yang
 
[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링Jaeho Seok
 
[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법SeungMin Yang
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 
[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발ChangKyu Song
 
GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법연우 김
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기ChangKyu Song
 
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산Taeung Ra
 
Gpg gems1 1.3
Gpg gems1 1.3Gpg gems1 1.3
Gpg gems1 1.3david nc
 

Viewers also liked (19)

Gpg study3.7
Gpg study3.7Gpg study3.7
Gpg study3.7
 
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
 
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
 
Gpg 1.13 ~ 1.14
Gpg 1.13 ~ 1.14Gpg 1.13 ~ 1.14
Gpg 1.13 ~ 1.14
 
op
opop
op
 
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 [GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
 
Gpg study 01
Gpg study 01Gpg study 01
Gpg study 01
 
Gpg study1.8
Gpg study1.8Gpg study1.8
Gpg study1.8
 
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
 
[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링
 
[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법
 
GPG 1권 4.12 VIPM
GPG 1권 4.12 VIPMGPG 1권 4.12 VIPM
GPG 1권 4.12 VIPM
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발
 
GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 
Gpg study5.5
Gpg study5.5Gpg study5.5
Gpg study5.5
 
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
 
Gpg gems1 1.3
Gpg gems1 1.3Gpg gems1 1.3
Gpg gems1 1.3
 

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

GPG 1.1 객체지향적 프로그래밍과 설계기법
GPG 1.1 객체지향적 프로그래밍과 설계기법GPG 1.1 객체지향적 프로그래밍과 설계기법
GPG 1.1 객체지향적 프로그래밍과 설계기법Taeung Ra
 
Api design for c++ ch3 pattern
Api design for c++ ch3 patternApi design for c++ ch3 pattern
Api design for c++ ch3 patternjinho park
 
Design patterns
Design patternsDesign patterns
Design patternsdf
 
HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2SeungHyun Hwang
 
Clean code
Clean codeClean code
Clean codebbongcsu
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
[Swift] Prototype
[Swift] Prototype[Swift] Prototype
[Swift] PrototypeBill Kim
 
Effective unit testing ch3. 테스트더블
Effective unit testing   ch3. 테스트더블Effective unit testing   ch3. 테스트더블
Effective unit testing ch3. 테스트더블YongEun Choi
 

Similar to [GPG 스터디] 1.3 자동적인 단일체 유틸리티 (8)

GPG 1.1 객체지향적 프로그래밍과 설계기법
GPG 1.1 객체지향적 프로그래밍과 설계기법GPG 1.1 객체지향적 프로그래밍과 설계기법
GPG 1.1 객체지향적 프로그래밍과 설계기법
 
Api design for c++ ch3 pattern
Api design for c++ ch3 patternApi design for c++ ch3 pattern
Api design for c++ ch3 pattern
 
Design patterns
Design patternsDesign patterns
Design patterns
 
HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2
 
Clean code
Clean codeClean code
Clean code
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
[Swift] Prototype
[Swift] Prototype[Swift] Prototype
[Swift] Prototype
 
Effective unit testing ch3. 테스트더블
Effective unit testing   ch3. 테스트더블Effective unit testing   ch3. 테스트더블
Effective unit testing ch3. 테스트더블
 

More from Sehyeon Nam

Game programing gems 4.17
Game programing gems 4.17Game programing gems 4.17
Game programing gems 4.17Sehyeon Nam
 
Game programing gems 4.11
Game programing gems 4.11Game programing gems 4.11
Game programing gems 4.11Sehyeon Nam
 
Game programing gems 1.11
Game programing gems 1.11Game programing gems 1.11
Game programing gems 1.11Sehyeon Nam
 
Game programing gems 1.10
Game programing gems 1.10Game programing gems 1.10
Game programing gems 1.10Sehyeon Nam
 
Game programing gems 3.4 3.6
Game programing gems 3.4 3.6Game programing gems 3.4 3.6
Game programing gems 3.4 3.6Sehyeon Nam
 
Hexagrid Draw by NHN NEXT Seo Dong Yu
Hexagrid Draw by NHN NEXT Seo Dong YuHexagrid Draw by NHN NEXT Seo Dong Yu
Hexagrid Draw by NHN NEXT Seo Dong YuSehyeon Nam
 
아르카스톤 기획
아르카스톤 기획아르카스톤 기획
아르카스톤 기획Sehyeon Nam
 
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산 [GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산 Sehyeon Nam
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법Sehyeon Nam
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법Sehyeon Nam
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summarySehyeon Nam
 
Ec++ c 1,2 surmary
Ec++ c 1,2 surmaryEc++ c 1,2 surmary
Ec++ c 1,2 surmarySehyeon Nam
 

More from Sehyeon Nam (13)

Game programing gems 4.17
Game programing gems 4.17Game programing gems 4.17
Game programing gems 4.17
 
Game programing gems 4.11
Game programing gems 4.11Game programing gems 4.11
Game programing gems 4.11
 
Game programing gems 1.11
Game programing gems 1.11Game programing gems 1.11
Game programing gems 1.11
 
Game programing gems 1.10
Game programing gems 1.10Game programing gems 1.10
Game programing gems 1.10
 
Game programing gems 3.4 3.6
Game programing gems 3.4 3.6Game programing gems 3.4 3.6
Game programing gems 3.4 3.6
 
Hexagrid Draw by NHN NEXT Seo Dong Yu
Hexagrid Draw by NHN NEXT Seo Dong YuHexagrid Draw by NHN NEXT Seo Dong Yu
Hexagrid Draw by NHN NEXT Seo Dong Yu
 
아르카스톤 기획
아르카스톤 기획아르카스톤 기획
아르카스톤 기획
 
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산 [GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summary
 
Ec++ c 1,2 surmary
Ec++ c 1,2 surmaryEc++ c 1,2 surmary
Ec++ c 1,2 surmary
 
D2 ppt
D2 pptD2 ppt
D2 ppt
 

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

  • 1. GPG 1.3 자동적인 단일체 유틸리티 P. 78 - 82 NHN NEXT 남현욱
  • 2. 자동적인 단일체 유틸리티 단일체 패턴singleton pattern 의도 해당 클래스의 인스턴스가 오직 하나 뿐임을 보장하고, 이에 대한 전역적인 접근점을 제공하기 위함. 구조 Singleton static GetInstance() SingletonOperation() GetSingletonData() static uniqueInstance singletonData return uniqueInstance public private
  • 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;
  • 4. 자동적인 단일체 유틸리티 단일체 템플릿 실제 사용 예 class TestClass : public Singleton<TestClass> { public: void print() { printf(“TEST~~~”); } private: TestClass(); ~TestClass(); }; int main() { TestClass::GetInstance()->print(); }
  • 5. 자동적인 단일체 유틸리티 끝 ‘ GPG를 공부하자’ 페이스북 페이지 https://www.facebook.com/gpgstudygogo