WinAPI 1. 싱글톤
1. 싱글톤
1. 정의
싱글톤은 디자인 패턴 중 하나로, 객체가 하나로 제한되어야 하는 경우에 사용하는 설계 방법이다.
싱글톤은 다음과 같이 설계한다:
-
일반적으로 생성 및 복사가 이루어져서는 안되므로, 생성자를 private 공간 안에 두고 복사 생성자와 대입 연산자의 자동 생성을 delete 로 제한한다.
-
하나로 제한된 싱글톤 객체는 static 변수 혹은 동적 할당으로 관리한다.
- 생성자 호출을 통한 객체 생성을 막아두었으므로 객체 생성 및 주소 반환용 초기화 함수가 필요하다.
- 이 함수는 멤버 함수이지만 객체가 없어도 호출이 가능해야 하므로 static 함수로 만들어야 한다. (멤버 함수에 static 키워드가 붙으면 그 함수는 해당 객체 없이도 호출이 가능하다. 다만, 이 경우 함수 내에서 this 포인터가 존재하지 않음.)
- 초기화 함수는 생성 또는 이전에 생성된 싱글톤 객체의 주소를 반환한다.
2. 구현
위 설계를 static 변수로 구현하면 다음과 같다. 자주 사용되는 구문이기에 define 전처리기를 이용해 처리했다.
#define SINGLETON(Type) public:\
static Type* GetInst()\
{\
static Type single;\
return &single;\
}\
private:\
Type();\
Type(const Type& _other) = delete;\
void operator =(const Type& _other) = delete;\
~Type();