프로그램에서 내에서 특정 객체가 무조건 하나만 생성되고, 그렇게 만들어진 객체를 어디에서나 쓸 수 있음을 보장하는 디자인 패턴
객체 생성을 미리 해놓는다
private
로 막는다.class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {} //생성자에 접근 x
public static Singleton getInstance() {
return singleton;
}
}
객체 생성이 필요할 때에 된다
private
로 막는다.class Singleton {
private static Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if (singleton == null) singleton = new Singleton();
return singleton;
}
}
class Singleton {
private Singleton() {}
private static class SingletonHelper {
private static final Singleton SINGLETON = new Singleton();
}
public static Singleton getInstance(){
return SingletonHelper.SINGLETON;
}
}
이 외에도 다양한 방법이 있다. 다만 가장 많이 쓰이는 방법은 Bill Pugh 방식이다.