Singleton Pattern
Singleton Pattern
Singleton Pattern
- 클래스의 인스턴스가 정확히 한 개만 생성되도록 보장하는 디자인 패턴
- 많은 요청을 받을 때 마다 매 번 인스턴스를 생성하면 비효율적
- 미리 생성된 하나의 인스턴스를 공유하는 패턴
- 인스턴스를 임의로 생성하지 못하도록 생성자를 private으로 설정
- 만약 인스턴스를 new 키워드를 통해 생성 가능해지면 의미가 없어짐
예제 코드
public class Singleton {
// 인스턴스를 static으로 생성
private static final Singleton instance = new Singleton();
// getInstance로만 인스턴스에 접근 가능. 매 번 동일한 한 개의 인스턴스만 반환
public static Singleton getInstance() {
return instance;
}
// 생성자가 private
private Singleton() {
}
}
단점 및 해결 방안
- 싱글톤 패턴에 필요한 코드 자체가 많음
- 구체적인 클래스에 의존해야 하기 때문에 OCP, DIP를 위반
- 생성자가
private
이라 자식을 만들기 힘듦 - 테스트가 어렵고, 유연성이 떨어짐
- 이런 단점들을 해결하기 위해 spring에서는
싱글톤 컨테이너
라는 것을 사용
References
- 스프링 핵심 원리 기본편 - 김영한 (https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard)