소스 코드를 기록하는 남자

싱글톤 패턴 (Singleton Pattern)

디자인 패턴

싱글톤 패턴이 무엇인가?

  • 싱글톤 패턴은 인스턴스를 딱 하나만 만들어 사용하기 위한 패턴이다.
  • 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같이 여러 개를 만들었을 때 불필요한 자원 낭비가 일어나는 부분을 방지할 수 있다.

싱글톤 패턴을 어떻게 적용해야 하나?

  • new를 실행할 수 없도록 생성자에 private 접근 제한자를 사용한다.
  • 유일한 단일 객체를 반환할 수 있는 정적 메소드를 생성한다.
  • 유일한 단일 객체를 참조할 정적 참조 변수를 사용한다.

코드를 보면서 어떻게 사용하는 것인가 다시 확인하자.

package 싱글톤패턴;

public class Singleton {

    static Singleton sigletonObject;
    
    private Singleton() {};
    
    public static Singleton getInstance() {
    	if (singtonObject == null) {
        	singletonObject = new Singleton();
        }
    	return singletonObject;
    }
}

 

new를 실행할 수 없도록 Singleton 생성자에 private을 사용했다. 이렇게 한다면 외부에서 new Singleton() 메소드를 호출할 수가 없다. 

 

유일한 단일 객체를 참조할 정적 참조 변수인 singletonObject를 사용한다. 추후 getInstance 메소드를 호출하게 되면 이 참조 객체를 반환한다.

 

유일한 단일 객체를 반환할 수 있는 정적 메소드가 필요하며 여기서는 getInstance라는 메소드를 사용했다. 일반적으로 싱글톤 패턴을 사용할 때 이름은 getInstance로 하는 듯하니 싱글톤 패턴을 사용할 때 고민하지말고 getInstance를 사용해도 무방하다.

 

마지막으로, 싱글톤 패턴 특징을 간략하게 설명하고, 마무리한다.

 

싱글톤 패턴

기본적으로 쓰기 가능한 속성을 갖지 않는 것을 대상으로 적용하며, private 생성자를 가지며, static 키워드 단일 객체 참조 변수를 사용하고, 단일 객체를 반환할 수 있는 getInstance 메소드를 사용한다.

 

guy-who-writes-sourcecode.tistory.com/30

 

스프링에 녹아있는 아름다운 디자인 패턴

프로그램을 개발하다 보면 많은 상황에 직면하게 되는데, 프로그래밍의 역사가 꽤 길지 않은가? 따라서 이와 비슷한 사례를 이미 경험한 선배들이 정리해 둔 표준 설계 패턴이 있다. 이를 디자

guy-who-writes-sourcecode.tistory.com