-
싱글톤패턴(singleton pattern)공부 2016. 6. 26. 23:02
싱글톤패턴이란?
먼저 Singleton 패턴의 용도는 하나의 프로그램 내에서 하나의 인스턴스만을 생성해야만 하는 상황에서 쓰인다. 예를 들어 환경설정을 관리하는 클래스나 Connection Pool, Thread Pool과 같이 풀(Pool) 형태로 관리되는 클래스의 경우 프로그램 내에서 단 하나의 인스턴스로 관리되는 것이 일반적이며, 이 때 Singleton 패턴을 적용하는 것이 일반적인 경우라고 볼 수 있다.
public class Singleton { private static Singleton singleton = new Singleton(); protected Singleton() { System.out.println("Maked Singleton"); } public static Singleton getInstance() { return singleton; } }
싱글톤의 기본형이다. singleton 멤버변수는 static 이어야한다는 것과 Singleton 클래스의 생성자는 private / protected 이어야한다는 것을 꼭 유념해야한다. private 일 경우는 결코 new 를 이용하여 인스턴스의 중복 생성을 방지하는 셈이기도 하나 상속이 되지 않는다는 단점이 있어 protected로 대게 선언한다.
Singleton의 인스턴스를 생성하기 위해 getInstance() 메소드를 이용한다. 맨 처음 getInstance() 을 호출하면 singleton 변수를 리턴하기 위해 전역변수로 선언되어 있는 singleton의 인스턴스를 static하게 생성한다. 그 후 getInstance()를 호출하면 static으로 생성되어 있는 singleton의 값을 받아와 리턴한다.
만약 getInstance()가 static이 아닐경우 해당 함수를 호출할때마다 가변적인 메모리 위치에 생성이 되므로 static으로 선언한다.