싱글턴 패턴이란 무엇인가요?
분야: 백엔드
싱글턴 패턴(Singleton Pattern) 이란 생성자를 여러 차례 호출해도 실제로 생성되는 객체를 하나로 유지하는 것을 의미합니다. 객체가 최초로 생성된 이후에 생성자나 객체 생성 메서드는 기존에 만들어진 객체를 반환합니다.
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
// 생성자 호출 제한
private Singleton() { ... }
public static Singleton getInstance() {
return INSTANCE;
}
}
싱글턴 패턴의 장단점은 무엇인가요?
싱글턴 패턴은 하나의 객체를 여러 상황에서 재사용할 수 있기 때문에 메모리 낭비를 방지할 수 있습니다. 또한, 여러 다른 객체가 하나의 인스턴스에 쉽게 접근할 수 있어 편리하다는 장점이 있습니다.
하지만, 싱글턴은 전역 객체를 생성한다는 특성상 코드의 복잡도를 높이고, 테스트하기 어려운 코드를 만들 수 있는 단점이 있습니다.
- 상황에 따라 더욱 복잡한 구현이 필요할 수 있습니다. 예를 들어, 싱글턴 객체를 지연 초기화(lazy initialization) 하고 싶을 때 여러 스레드가 동시에 생성자에 접근하면 두 개 이상의 객체가 생성될 수 있으므로 동시성 문제를 고려해야 합니다.
- 테스트에서는 싱글턴 객체의 상태를 초기화하는 과정이 필요합니다. 예를 들어, 1번 테스트에서 싱글턴 객체를 수정한 경우, 2번 테스트는 싱글턴의 상태를 초기화한 후 테스트를 실행해야 합니다.
- 싱글턴 객체가 인터페이스를 구현하지 않은 경우, 테스트 환경에서 가짜 구현체로 대체하여 주입하기 어렵습니다.