Jello's development blog

Jello's development blog

싱글톤 패턴 (Singleton pattern)

Singleton Pattern (싱글톤 패턴) 이란?

GoF의 디자인 패턴중의 하나로, 하나의 프로그램이나 프로젝트 안에서 단 하나의 인스턴스만을 생성하는 상황에서 사용되는 패턴이다. 프로젝트 내에서 범용적으로 쓰이는 Manager나, 환경설정을 관리하는 Config 클래스, DB에 일정 Connection을 유지하며 요청을 관리하는 Database Connection Pool에 사용될 수 있다.

기본형

Singleton pattern의 기본적인 형태는 다음과 같다.

public class Singleton {
	private static Singleton singleton = new Singleton();
	// More property
	
	private Singleton() {
		System.out.println("Construct singleton");
	}
	public static Singleton getInstance() {
		return singleton;
	}
}

이 코드에서 주목해야 할 점은 자기 자신의 인스턴스를 가지는 멤버변수를 static으로 가지고 있다는 것이다. 이로써 정의되는 모든 인스턴스는 모두 하나의 멤버 인스턴스를 가르키게 되고, 모두 같은 데이터를 공유하게 하여 하나의 데이터 모음을 각자 다른 인스턴스로 나뉘어 관리되지 않게 한다.

테스트

public class Test {
     public static void main(String [] args) {
          Singleton instance1=Singleton.getInstance();
          Singleton instance2=Singleton.getInstance();
          if(instance1 == instance2) {
               System.out.println("Equal");
          }
          else {
               System.out.println("Not Equal");
          }
     }
}

이 코드의 결과는 Equal일 것이다.
instance1과 instance2가 Singleton.getInstance()로 가르키는 곳이 같기 때문이다.

참고문서