본문 바로가기
프로그래밍/공부

[C++] 싱글턴 패턴

by Sik.K 2022. 12. 13.

엄밀히 말하면 C++ 카테고리에 분류될 것은 아니나 사실 새로 카테고리를 만들기 귀찮기 때문에 이렇게 게시한다.

 

싱글턴 패턴을 정의하면 다음과 같다.

 

애플리케이션이 시작 될 때, 어떤 클래스가 오직 한 개의 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공하는 패턴

 

싱글턴 패턴이 사용되는 경우는 다음과 같은 상황이다.

 

1. 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근점으로 모든 사용자가 접근할 수 있도록 해야 할 때

 

2. 유일한 인스턴스가 서브클래싱으로 확장되어야 하며, 사용자는 코드의 수정 없이 확장된 서브클래스의 인스턴스를 사용할 수 있어야 할 때

 

싱글턴 패턴의 구조

 

이런 싱글턴 패턴이 갖는 장점은 다음과 같다.

 

1. 유일하게 존재하는 인스턴스로의 접근을 통제할 수 있다. --> 싱글턴 클래스 자체가 인스턴스를 캡슐화하기 때문에, 이 클래스에서 사용자가 언제, 어떻게 이 인스턴스에 접근할 수 있는지 제어할 수 있다.

 

2. 이름 공간(namespace)를 좁힌다. --> 싱글턴 패턴은 전역 변수보다 좋다. 전역 변수를 정의하여 발생하는 디버깅의 어려움 등의 문제를 없앤다.

 

3. 연산 및 표현의 정제를 허용한다. --> 싱글턴 클래스는 상속될 수 있기 때문에, 상속된 서브클래스를 통해서 새로운 인스턴스를 만들 수 있다. 또한 이 패턴을 사용하면, 런타임에 필요한 클래스의 인스턴스를 써서 응용 프로그램을 구성할 수도 있다.

 

 

 

현재까지 알아본 바로는 이 정도지만 앞으로 더 공부하여 완전히 숙지할 수 있을 수준이 되어야 할 것 같다.

'프로그래밍 > 공부' 카테고리의 다른 글

[Programing] 정적 & 동적 라이브러리  (0) 2022.12.15
[Game] Delta Time  (0) 2022.12.14
[C++] 정적(Static) 변수  (0) 2022.12.13
[C++] 비트 연산자  (0) 2022.12.13
[그래픽스] 더블 버퍼링(Double Buffering)  (0) 2022.12.12

댓글