Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)에서 싱글톤(Singleton) 클래스를 만드는 방법

싱글톤(Singleton) 클래스란 오직 단 하나의 객체만 가지는 클래스를 의미합니다. 즉, 해당 클래스는 한 번만 인스턴스화할 수 있습니다. 클래스의 생성자를 private으로 선언하면 객체 생성 범위가 제한되어, 외부에서 임의로 인스턴스를 만드는 것을 막을 수 있습니다.

여기에 객체의 인스턴스를 반환하는 static 메서드를 함께 사용하면, 객체 생성 과정을 클래스 내부에서 직접 관리할 수 있습니다. 또한 static 블록(static 초기화 블록)을 활용하면 클래스가 로딩될 때 객체를 한 번만 생성하도록 구현할 수 있습니다.

싱글톤 구현의 핵심 요소

  • private 생성자: 외부 클래스에서 new 키워드로 객체를 생성하지 못하도록 차단합니다.
  • private static 필드: 유일하게 존재할 자기 자신의 인스턴스를 저장합니다.
  • public static 메서드(getter): 내부에 생성된 단 하나의 인스턴스를 외부에 반환합니다.

예제 코드

public class SingletonClassTest {
    private static SingletonClassTest obj;

    // static 블록에서 객체 생성 (클래스 로딩 시 딱 한 번 실행됨)
    static {
        obj = new SingletonClassTest();
    }

    // 생성자를 private으로 선언하여 외부 생성 차단
    private SingletonClassTest() { }

    // 유일한 인스턴스를 반환하는 static 메서드
    public static SingletonClassTest getObject() {
        return obj;
    }

    public void print() {
        System.out.println("Singleton Class Test");
    }

    public static void main(String[] args) {
        SingletonClassTest test = getObject();
        test.print();
    }
}

실행 결과

Singleton Class Test

위 예제처럼 static 블록과 private 생성자를 조합하면, 프로그램 전체에서 SingletonClassTest의 인스턴스는 단 하나만 존재하게 됩니다. 이러한 패턴은 데이터베이스 연결 관리, 로거(Logger), 설정 정보 관리 등 공통으로 사용되는 단일 리소스를 다룰 때 매우 유용하게 활용됩니다.