오직 하나의 인스턴스를 갖고, 전역적인 접근점을 갖게하는 디자인 패턴.
장점
인스턴스의 유일성을 보장한다.
게으른 초기화가 일어난다.
어디서든 쉽게 접근이 가능하다.
이름 공간을 좁힌다.
단점
결국 전역 변수다.
게으른 초기화를 방지할 수 없다.
두 가지 문제를 풀려고 한다.
고려사항
꼭 클래스가 필요한지.
정적 변수를 이용해 인스턴스 개수를 제한할 수 있다.
전역적인 접근점 대신에 다른 방법을 사용.
의존성 주입을 사용.
상위 클래스를 이용.
이미 전역인 객체를 이용.
중재자 패턴을 이용한다.
모노스테이트 활용.