4. 싱글톤 패턴 (Singleton Pattern)

서주홍's avatar
Aug 14, 2024
4. 싱글톤 패턴 (Singleton Pattern)
💡
싱글톤 패턴(Singleton Pattern)은 객체를 단 하나만 생성하고, 그 생성된 객체를 어디서든지 접근할 수 있도록 보장하는 디자인 패턴입니다. 이는 메모리 절약과 글로벌한 접근점을 제공하는 데 유용합니다.

■ 1. 싱글톤 패턴의 주요 개념

  • Private 생성자
    • 객체 생성을 막기 위해 생성자를 private으로 선언합니다.
    • 이렇게 하면 외부에서 new 키워드를 통해 객체를 생성할 수 없습니다.
    •  
  • Static 인스턴스
    • 클래스 내에서 자기 자신을 참조하는 static 변수를 선언합니다.
    • 이 변수는 클래스가 메모리에 로드될 때 한 번만 생성됩니다.
    •  
  • Public 접근 메서드
    • 외부에서 인스턴스에 접근할 수 있도록 public 메서드를 제공합니다.
    • 이 메서드를 통해 static으로 선언된 유일한 인스턴스를 반환받습니다.
 

■ 2. 싱글톤 패턴 구현 방법1

💡
getInstance() 메서드를 통한 싱글톤 패턴
  • 싱글톤 인스턴스 생성 및 관리
    • 클래스 내에 private static으로 인스턴스를 선언하고 초기화합니다.
    • 이 인스턴스는 클래스가 로드될 때 한 번만 생성됩니다.
  • getInstance() 메서드를 통한 접근
    • public static 메서드인 getInstance()를 통해 외부에서 인스턴스를 가져옵니다.
    • 이 메서드는 클래스 외부에서 생성자에 직접 접근할 수 없으므로,
    • getInstance()를 통해 유일한 인스턴스를 반환합니다.
 
public class Doorman { private static Doorman doorman = new Doorman(); private Doorman() {} public static Doorman getInstance() { return doorman; } public void 쫓아내(Animal a) { System.out.println(a.getName() + " 쫓아내"); } }
  • 설명
    • getInstance() 메서드를 통해 항상 동일한 Doorman 객체를 반환받아 사용하게 됩니다.
 
 

■ 3. 싱글톤 패턴 구현 방법2

💡
public static 인스턴스 필드를 통한 싱글톤 패턴
  • 인스턴스를 public static으로 선언
    • 클래스 내부에서 public static으로 인스턴스를 직접 선언하고 초기화합니다.
    • 외부에서 클래스명을 통해 직접 인스턴스에 접근할 수 있도록 합니다.
  • 생성자 접근 차단
    • 생성자는 private으로 선언하여, 외부에서 추가 인스턴스를 생성하지 못하도록 막습니다.
 
public class Doorman { public static Doorman instance = new Doorman(); private Doorman() {} public void 쫓아내(Animal a) { System.out.println(a.getName() + " 쫓아내"); } }
  • 설명
    • Doorman.instance로 직접 접근하여 사용할 수 있으며, 코드가 더 단순해집니다.
 
Share article

maestrojava