본문 바로가기

JAVA/Design Pattern

Singleton Design Pattern

Singleton Pattern 은 Manager 또는 Service 같은 관리하는 클래스

즉, 두개 이상 만들면 안되거나, 만들 필요를 느끼지 못할 때 사용한다.


1. 생성자를 private으로 선언해서 접근이 불가하게 만든다.


2. 클래스를 인스턴스로 생성한다.


3. getInstance라는 static 메소드를 만들어서 , 이 곳을 통해서만 객체를 넘겨준다.

ㄴ 이때, 생성된 객체는 클래스 변수로 만들어져서 하나의 객체만이 생성이된다.




이렇게 생성!!

public class DepartmentDAO {

	private static DepartmentDAO deptInstance = new DepartmentDAO();
	private DepartmentDAO(){
	}
	public static DepartmentDAO getInstance(){
		return deptInstance;
	}
}

멀티 쓰레드 환경에서는 DCL(Duble Check Locking)을 구현한다.

public class DepartmentDAO {

	private static DepartmentDAO deptInstance = new DepartmentDAO();
	private DepartmentDAO(){
	}
	//객체 생성없이도 줄수 있는 static 으로 넘겨야 한다.
	public static SingletonDCL getInstance(){
//		Double-Checking Locking
		if(uniqueInstance==null){
			synchronized (SingletonDCL.class) {
				if(uniqueInstance==null){
					uniqueInstance = new SingletonDCL();
				}
			}
		}
		return uniqueInstance;
	}
}
반응형

'JAVA > Design Pattern' 카테고리의 다른 글

[Design Pattern] #1. Business Class (Service)  (0) 2015.02.11
[Design Pattern] #0. Value Object  (0) 2015.02.05