객체를 단 하나만 생성하여 이를 공유하도록 설계한 패턴
웹 어플리케이션은 보통 여러 고객이 동시에 요청을 함
이 때 위와 같은 코드가 서버에 구현되어 있다면 고객이 요청을 할 때마다 새로운 객체가 생성됨
- 트래픽이 초당 100이라면 초당 100개의 객체가 생성되고 소멸됨
-> 메모리 낭비가 심함- 이에 대한 해결 방안으로 해당 객체는 단 1개만 생성하여 공유하도록 설계함
-> 이를 싱글톤 패턴이라고 함
1. 구현 코드가 많이 들어감
2. 클라이언트가 구현 클래스에 의존(DIP위반)
- static멤버로 선언하기 때문에
3. 구현 클래스에 의존하기 때문에 OCP위반 가능성이 높음
4. 테스트가 어려움
5. 내부 속성 변경이나 초기화가 어려움
6. private한 생성자로 자식 클래스 생성이 어려움
7. 유연성이 떨어짐
- 때문에 안티패턴으로 불리기도 함