인스턴스를 하나만 만들어서 사용하기 위한 패턴
connection pool , thread pool , device setting object 같이 instance 를 여러 개 만들게 되면 불필요한 자원을 사용 즉 프로그램이 예상치 못한 결과를 낳을 수 있다. 이러한 경우 싱글톤 패턴을 사용하면 매우 유용한데 3가지 기준에 만족해야한다.
new 를 실행할 수 없도록 생성자에 private 접근 제어자를 지정
유일한 단일 객체를 반환할 수 있는 static method 가 필요
유일한 단일 객체를 참조할 static variable 이 필요
Ex )
public class Singleton {
static Singleton singleton; // 정적 참조 변수
private Singleton(){}; // private 접근 제어자
public static Singleton getInstance(){ // static variable 활용을 위해 static method
if (singleton==null) {
singleton= new Singleton(); // 여기서 정적 참조 변수와 private 접근제어자 활용
}
return singleton;
}
}
public class Client {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
Singleton s3 = Singleton.getInstance();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
s1 = null;
s2 = null;
s3 = null;
}
}
실행 결과
DesignPattern.singletonPattern.Singleton@4eec7777 DesignPattern.singletonPattern.Singleton@4eec7777 DesignPattern.singletonPattern.Singleton@4eec7777