싱글톤(Singleton) 패턴이란, 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다.
싱글톤 패턴을 사용하는 이유는, 메모리 낭비를 방지할 수 있기 때문인데,
최초 한 번의 new 연산자를 통해서 고정된 메모리 영역을 사용하기 때문에 추후 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다.
뿐만 아니라 이미 생성된 인스턴스를 활용하니 속도 측면에서도 이점이 있다고 볼 수 있다.
또 다른 이유는 클래스 간의 데이터 공유가 쉽기 때문인데,
싱글톤 인스턴스가 전역으로 사용되는 인스턴스이기 때문에 다른 클래스의 인스턴스들이 접근하여 사용할 수 있다.
하지만 여러 클래스의 인스턴스에서 싱글톤 인스턴스의 데이터에 동시에 접근하게 되면 동시성 문제가 발생할 수 있으니 이점을 유의해서 설계하는 것이 좋다.
이 외에도 도메인 관점에서 인스턴스가 한 개만 존재하는 것을 보증하고 싶은 경우, 싱글톤 패턴을 사용하기도 한다.