
싱글톤 패턴의 출현설계를 하다 보면, 애플리케이션 전반에 걸쳐 유일하게 존재해야 하는 객체가 있다. 싱글톤 패턴은 불필요한 리소스 낭비를 방지할 뿐 아니라, 관리를 용이하게 한다는 점에서 한때 각광받던 디자인 패턴 중 하나다. 어디서든 쉽게 접근해서 쓸 수 있다는 점도 개발자들에게 충분히 매력적으로 느껴졌을 것이다. 마치 전역 변수처럼 편의성을 제공하면서도 최소한의 객체 지향 원칙을 지키는 듯 보였으니 말이다. 하지만 싱글톤 패턴의 가장 고질적인 문제는 강한 결합에 있었다. 싱글톤에 의존하는 클래스들은 싱글톤의 존재를 직접적으로 알게 되고, 이는 곧 테스트를 매우 어렵게 만든다는 말과 같다. 싱글톤의 상태가 전역적으로 공유되기 때문에, 예측 불가능한 사이드 이펙트가 발생하기 쉬웠으며, 병렬 처리 환경에서..