본문 바로가기

Software Architect

[Design Pattern] Singleton Pattern

Singleton Pattern

개요

  • 객체가 생성되는 최대 개수를 제한하는 방법
  • 적용방법
    > 생성자를 Private로 만들어서 Client에서 직접 생성하지 못하도록 함
    > getInstance() 메서드를 통해서만 생성이 가능하도록 함

구현방법

public class main {
    public static void main(String[] args) {
    	KFC kfc = KFC.getMe("Lee");  
    	kfc.status();
    	
    	KFC kf2 = KFC.getMe("Kim");
    	kf2.status();
    }
}

class KFC {
	static KFC kfc;
	private static String KFCname;
	
	private KFC() { };                    // [1] KFC k = new KFC() 로 불러서 쓰지 못하도록 함
	
	public static KFC getMe(String name) {
		if (kfc == null) {                // [2] 없는 경우에만 사용 (Singleton)
			kfc = new KFC();
			KFCname = name;
		}
		return kfc;
	}
	public void status() {
		System.out.println("Name = "+KFCname);
	}
}
  • [1] Client에서 직접 불러서 생성하지 못하도록 private로 선언
  • [2] Instance가 없는 경우에만 생성하도록 추가, 있는 경우에는 기존에 생성한 Instance 사용