프로그래밍/공부

[C++] 싱글턴 패턴

Sik.K 2022. 12. 13. 00:55

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

 

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

 

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

 

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

 

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

 

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

 

싱글턴 패턴의 구조

 

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

 

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

 

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

 

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

 

 

 

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