싱글톤 패턴(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