[java] 싱글톤 패턴

개요

싱글톤 패턴은 애플리케이션 전역에서 특정 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴입니다. 이는 애플리케이션 내에서 특정 리소스에 대한 공유, 설정 정보, 로깅 등과 같은 공통된 인스턴스를 제공할 때 유용합니다.

구현

싱글톤 패턴을 구현하기 위해서는 생성자를 private으로 선언하고, 정적 메소드를 통해 유일한 인스턴스에 접근하도록 해야 합니다. 아래는 자바로 구현한 예시입니다:

public class Singleton {
    // 유일한 인스턴스를 저장하기 위한 private 정적 변수
    private static Singleton instance;

    // private 생성자
    private Singleton() {
    }

    // 유일한 인스턴스에 접근할 수 있는 정적 메소드
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

위 코드에서 getInstance 메소드는 처음 호출될 때에만 인스턴스를 생성하고, 이후에 호출될 때는 이미 생성된 인스턴스를 반환합니다.

주의사항

싱글톤 패턴을 사용할 때에는 멀티스레딩 환경에서 안전성을 고려해야 합니다. 위의 코드에서는 getInstance 메소드에 synchronized 키워드를 사용하여, 다중 스레드로부터 안전하게 인스턴스를 생성하도록 했습니다.

결론

싱글톤 패턴은 인스턴스의 공유와 메모리 절약을 위해 매우 유용합니다. 그러나 남발하게 되면 의존성이 커지고 테스트하기 어려운 코드를 만들 수 있으므로 신중하게 사용해야 합니다.

참고