Singleton Pattern
오직 한 개의 클래스 인스턴스만을 갖도록 보장하고 이에 대한 전역적인 접근을 허용하는 패턴이다.
활용성
- 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근점으로 모든 사용자가 접근할 수 있도록 해야할 때
- 유일한 인스턴스가 서브클래싱으로 확장되어야 하며, 사용자는 코드의 수정 없이 확장된 서브클래스의 인스턴스를 사용할 수 있어야 할 때
싱글톤 패턴 사용에 따른 결과
유일하게 존재하는 인스턴스로의 접근 통제
싱글톤 클래스는 인스턴스를 캡슐화하기 때문에 이 클래스에서 사용자가 언제, 어떻게 이 인스턴스에 접근할 수 있는지에 대한 제어가 가능하다.
namespace 제어
싱글톤 패턴은 전역변수보다 네임스페이스 관점에서 우수하다.
연산 및 표현의 정제
싱글톤 클래스는 상속이 가능하기 때문에 상속한 서브클래스를 통해 새로운 인스턴스를 만들 수 있다. 이를 통해 런타임에 필요한 클래스의 인스턴스를 사용한 프로그램의 구성이 가능하다.
인스턴스 개수 변경의 자유로움
상황이 바뀌어 싱글톤 클래스의 인스턴스 개수를 하나가 아닌 여러개로 변경하고 싶을 때 변경이 용이하다.
싱글톤
구조
싱글톤의 구조는 다음과 같다.
C++ 구현
c++
1 | void SingletonPattern::SingletonPattern() |
c++
1 | class Singleton |
console
1 | Singleton Instance Constructed |
java 구현
java
1 | public class Client { |
java
1 | public class Singleton { |