의도
단 하나의 클래스 인스턴스만을 가지도록 보장하고 전역적인 접근을 제공하기 위함입니다.
동기
단 하나의 인스턴스를 갖도록 하는 것이 좋은 클래스가 있습니다. 예를 들어 파일 시스템, 윈도우 관리자같은 것들은 단 하나여야 합니다.
클래스 자신이 인스턴스에 대한 접근 방법을 자체적으로 관리하면
- 다른 인스턴스가 생성되지 않도록 관리할 수 있고
- 클래스 자신이 해당 인스턴스에 대한 접근 방법을 제공할 수 있습니다.
활용성
- 클래스의 인스턴스가 하나여야 하며 모든 사용자가 접근할 수 있어야 할 때
- 유일한 인스턴스가 서브클래싱으로 확장되어야 하고 사용자는 코드의 수정 없이 확장된 서브 클래스의 인스턴스를 사용할 수 있어야 할 때
참여자
- Singleton: Instance로 접근할 수 있도록 해줍니다.
결과 → 장점
- 유일하게 존재하는 인스턴스로의 접근을 통제할 수 있습니다.
- name space를 좁힐 수 있습니다.
- 연산 및 표현의 정제가 가능합니다.
- 인스턴스의 개수 변경이 자유롭습니다.