old/Java

싱글톤(Singleton)

물 개 2020. 11. 15. 15:11

전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우, 단 하나만 생성되는 이 객체를 싱글톤(Singleton)이라고 한다.

싱글톤을 만들려면 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 한다.

 

1. 생성자 앞에 private 접근 제한자를 붙인다.

2. 자신의 타입인 private 정적 필드를 하나 선언하고 자신의 객체를 생성해 초기화 한다.

3. 외부에서 호출할 수 있는 정적 메소드 getInstance()를 선언하고 정적 필드에서 참조하고 있는 자신의 객체를 리턴한다.

public class Singleton {
    //정적 필드
    private static Singleton singleton = new Singleton();
    
    //생성자
    private Singleton(){ }
    
    //정적 메소드
    public static getInstance() {
    	return singleton;
    }
}

외부에서 객체를 얻는 유일한 방법은 getInstance() 메소드를 호출하는 것 뿐이다.

getInstance() 메소드는 단 하나의 객체만 리턴하기 때문에 아래 변수1과 변수2는 동일한 객체를 참조한다.

Singleton 변수1 = Singleton.getInstance();

Singleton 변수2 = Singleton.getInstance();

변수1 == 변수 2; //true