반응형
Singleton Pattern (싱글톤 패턴)
프로그램안에서 어떤 클래스의 인스턴스가 단 1개만 존재 하도록, 폐쇄적으로 클래스를 디자인 하는것
구현방법
1.생성자는 private 으로 막는다, 외부에서 new 를 통한 instance 생성을 할 수 없게 만든다.
2.인스턴스 하나를 담을 수 있는 포인터변수를 선언, static 으로 설정해서, 오직하나만 존재할 수 있게 만든다
3. m_pInst를 가져오거나(get), 메모리 해제(Destroy)할 수 있는 멤버 함수들을 선언, static 변수에 접근할 수 있어야 하고
외부에서 해당 함수들을 쓸 수 있어야 하므로 public 으로 지정
4. m_pInst를 초기화 해주기 위해서는 static 멤버 변수 이므로, 생성자가 아닌 클래스 외부에서
MySingletonClass* MySingletonClass::m_pInst = nullptr; //이런식으로 초기화를 해준다
5.GetInst() 함수를 구현한다, m_pInst 가 nullptr 이라면, 새로 생성하여 instance를 초기화 해준뒤
앞으로도 호출될때마다 이미 생성된 instance를 return 하도록 한다
6.DestroyInst() 함수를 구현한다, GetInst() 함수와 유사한 구조를 가지고 있다 차이점은
delete와 nullptr, 초기화 가 return 대신에 들어간다
최종코드
MySingletonClass.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#pragma once
class MySingletonClass
{
private:
MySingletonClass();
~MySingletonClass();
private:
static MySingletonClass* m_pInst;
public:
static MySingletonClass* GetInst();
static void DestroyInst();
};
|
cs |
MySingletonClass.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include "MySingletonClass.h"
MySingletonClass* MySingletonClass::m_pInst = nullptr;
MySingletonClass::MySingletonClass()
{
}
MySingletonClass::~MySingletonClass()
{
}
MySingletonClass* MySingletonClass::GetInst()
{
if (!m_pInst)
{
m_pInst = new MySingletonClass;
}
return m_pInst;
}
void MySingletonClass::DestroyInst()
{
if (!m_pInst)
{
return;
}
delete m_pInst;
m_pInst = nullptr;
}
|
cs |
반응형
'C++' 카테고리의 다른 글
C++ Inheritance (상속) _ 다형성, 업캐스팅, 다운캐스팅 (0) | 2020.03.10 |
---|---|
C++ Inheritance (상속)_ 상속관계, 접근권한, 생성자,소멸자 순서 (1) | 2020.03.09 |
const (0) | 2020.02.29 |
Static Member Function(정적 멤버 함수) (0) | 2020.02.27 |
CopyConstructor, Shallow Copy, Deep Copy (0) | 2020.02.24 |