Gof 디자인패턴_싱글턴
by Gongdel
싱글턴(Singleton)
의도
오직 한 개의 클래스 인스턴스
만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다.
활용성
- 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근점으로 모던 사용자가 접근할 수 있도록 해야 할 때
- 유일한 인스턴스가 서브클래싱으로 확장되어야 하며, 사용자는 코드의 수정없이 확장된 서브클래스의 인스턴스를 사용할 수 있어야 할 때
구조
- Singleton: Instance() 연산을 정의하여, 유일한 인스턴스로 접근할 수 있도록 한다.
협력 방법
- 사용자는 Singleton 클래스에 정의된 Instance() 연산을 통해 유일하게 생성되는 단일체 인스턴스에 접근할 수 있다.
결과
- 장점
- 유일하게 존재하는 인스턴스로의 접근을 통제
- Singleton 클래스 자체가 인스턴스를 캡슐화하기 때문에, 해당 클래스에서 사용자가 인스턴스에 접근할 수 있는지를 제어 가능
- name space(이름 공간이 존재하는 공간)를 좁힌다.
- 싱글턴 패턴은 전역 변수보다 더 좋다. 전역 변수를 사용해서 name space를 망치는 일을 없애주기 때문.
즉, 전역 변수를 정의하여 발생하는 문제(디버깅의 어려움과 같은)를 없앤다.
- 싱글턴 패턴은 전역 변수보다 더 좋다. 전역 변수를 사용해서 name space를 망치는 일을 없애주기 때문.
- 연산 및 표현의 개선(refinement)을 허용한다.
- Singleton 클래스는 상속될 수 있기 때문에, 상속한 서브클래스를 통해서 새로운 인스턴스를 만들 수 있다.
구현
- 인스턴스가 유일해야 함을 보장한다.
예제 코드
- 참조
Subscribe via RSS