
싱글톤 패턴은 객체의 인스턴스가 오직 1개만 생성되는 패턴이다
//싱글톤 구현
private static Singleton instance = null;
private Singleton() {
//생성자는 private으로 감싸준다
}
public static Singleton getInstance() {
if (instance == null)
instance = new Singleton();
return instance;
}
멀티스레딩 환경에서 발생할 수 있는 동시성 문제 해결을 위해 syncronized키워드를 사용해야 한다.
테스트하기 어렵다. 싱글톤 인스턴스는 자원을 공유하고 있기 때문에 테스트가 결정적으로 격리된 환경에서 수행되려면 매번 인스턴스의 상태를 초기화 시켜주어야 한다.
의존 관계상 클라이언트가 구체 클래스에 의존하게 된다. new 키워드를 직접 사용하여 클래스 안에서 객체를 생성하고 있으므로 이는 SOLID 원칙 중 DIP를 위반하게 되고 OCP 원칙 또한 위반할 가능성이 높다.