Study/Java

싱글톤(Singleton)

sowon02 2025. 7. 8. 17:15

1. Singleton 패턴이란?

  • 프로그램 전체에서 단 하나의 객체만 만들도록 보장하는 디자인 패턴.
  • 메모리 절약, 데이터 일관성 유지 목적.
  • 외부에서 new로 생성자 호출 방지 → 생성자를 private으로 선언.
  • 객체에 접근하기 위한 유일한 방법으로 getInstance() 메서드 제공.

2. 구현 구조

1) 클래스 내부 구조

public class Singleton {
    // 1. 자신의 타입으로 된 static 필드 생성 (단 하나의 객체 생성)
    private static Singleton singleton = new Singleton();

    // 2. 생성자를 private으로 선언하여 외부에서 생성자 호출 방지
    private Singleton() {}

    // 3. 외부에서 객체에 접근하기 위한 static 메서드 제공
    static Singleton getInstance() {
        return singleton;
    }
}

2) 사용 방법

public class SingletonExample {
    public static void main(String[] args) {
        // 직접 new로 생성 불가능 (컴파일 에러 발생)
        // Singleton obj1 = new Singleton();

        // getInstance()를 통해서만 접근 가능
        Singleton obj1 = Singleton.getInstance();
        Singleton obj2 = Singleton.getInstance();

        if (obj1 == obj2) {
            System.out.println("같은 Singleton 객체입니다.");
        } else {
            System.out.println("다른 Singleton 객체입니다.");
        }
    }
}
  • obj1 == obj2 비교 시 true, 즉 동일한 객체를 가리킴.

3. 정리

  • static 필드로 단 하나의 인스턴스를 미리 생성.
  • 생성자를 private으로 막아 외부에서 객체 생성 불가능.
  • getInstance() 메서드를 통해서만 객체에 접근 가능.
  • 프로그램 전체에서 동일한 인스턴스 사용 보장.

'Study > Java' 카테고리의 다른 글

정적 멤버와 static  (0) 2025.07.08
인스턴스 멤버와 this  (0) 2025.07.08
접근제어자  (0) 2025.07.08
상속(Inheritance)와 다형성(Polymorphism)  (0) 2025.07.07
캡슐화(Encapsulation)  (0) 2025.07.06