Singleton Pattern

Design Patterns 2009. 6. 23. 15:11
package Singleton;

public class Singleton {
    private static Singleton singleton = new Singleton();
    private Singleton() {
        System.out.println("인스턴스 생성!");
    }
    public static Singleton getInstance() {
        return singleton;
    }
}
// Singleton.java

package Singleton;

public class Main extends Thread {
    public static void main(String agrs[]) {
        System.out.println("Start");
        Singleton obj1 = Singleton.getInstance();
        Singleton obj2 = Singleton.getInstance();

        if(obj1 == obj2) {
            System.out.println("obj1 == obj2");
        }
        else {
            System.out.println("obj1 != obj2");
        }
    }
}

// Main.java

시스템내에 단 한 개만 존재하는 것을 프로그램으로 표현시 클래스의 인스턴스를 하나만 만든다.
지정한 클래스의 인스턴스가 하나만 존재하고 이를 프로그램 상에서 보장하는 패턴을 Singleton Pattern이라 한다.
다수의 인스턴스가 존재하는 경우 상호간에 영향을 주어 예기치 못한 오류가 발생할 확률이 높으
므로 이를 제한하는 경우에 사용


예제의 Singleton Class는 인스턴스를 하나만 만들고 static으로 singleton이 정의되어 클래스가
메모리에 로드될때 한번 초기화 된다.


생성자가 private으로 되어 있으므로 외부에서 new Singleton()을 하게되면 컴파일 시에 오류가
발생한다. Singleton 패턴의 경우 개발자가 부주의 하더라도 인스턴스는 하나만 존재


글 보관함

카운터

Total : / Today : / Yesterday :
get rsstistory!