전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우가 있습니다.

단 하나만 생성된다고 해서 이 객체를 싱글톤(Singleton)이라 합니다. 싱글톤을 만들려면 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 합니다. (생성자를 호출한 만큼 객체가 생성되므로)

생성자를 외부에서 호출할 수 없도록 하려면 생성자 앞에 private 접근 제한자를 붙여주면 됩니다.


예시)

[싱글톤을 만드는 코드]

public class 클래스 {

//정적 필드

private static 클래스 singleton = new 클래스();


//생성자

private 클래스() {}


//정적 메소드

static 클래스 getInstance() {

return singleton;

}

}


(싱글톤 객체는 힙(heap)영역에 들어있습니다.)

==> 외부에서 객체를 얻는 유일한 방법은 getInstance() 메소드를 호출하는 방법입니다

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


ex)

클래스 변수1 = 클래스.getInstance();

클래스 변수2 = 클래스.getInstance();



ex) [Singleton.java]

public class Singleton {

private static Singleton singleton = new Singleton();

private Singleton() { }


static Singleton getInstance() {

return singleton;

}

}


[SingletonExample.java]

public class SingletonExample {

public static void main(String[] args) {

/*

Singleton obj1 = new Singleton();        //컴파일 에러

*/

Singleton obj1 = Singleton.getInstance();

Singleton obj2 = Singleton.getInstance();


if(obj1 == obj2) {

System.out.println("같은 Singleton객체입니다.");

} else {

System.out.println("다른 Singleton객체입니다.");

}

}

}


[결과]

==> 같은 Singleton객체입니다.



WRITTEN BY
SiriusJ

,