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