Halo World

싱글톤(Singleton) 본문

개발 지식/JAVA

싱글톤(Singleton)

_Yeony 2017. 6. 3. 10:51

| 싱글톤(Singleton)


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

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

 그리고 이를 위해 생성자 앞에 Private 접근 제한자를 붙여준다.




> 싱글톤을 만드는 코드


 Public class Singleton{

     // 정적 필드

private static Singleton A = new Singleton();


// 생성자

private Singleton() {}


// 정적 메소드

static Singleton getInstance(){

return A;

}

}


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

 (클래스 내부에서는 new 연산자로 생성자 호출이 가능함)

 정적 필드로 private 접근 제한자를 붙여 외부에서 필드값을 변경하지 못하도록 막는다. 대신 외부에서 호출하 수 있는 정적 메소드인 getInstance()를 선언하고 정적 필드에서 참조하고 있는 자신의 객체를 리턴해준다.



 > 외부에서 객체를 얻는 유일한 방법


 Singleton 변수1 = Singleton.getInstance();

 Singleton 변수2 = Singleton.getInstance();


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