엄밀히 말하면 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 |
댓글