개요
- singleton pattern
- 싱글턴 패턴, 싱글톤 패턴, 싱글턴, 싱글톤[1]
- 인스턴스를 1개만 만들 수 있는 패턴
- 어떤 클래스의 인스턴스를 하나만 만들 수 있는 패턴
- 인스턴스에 접근할 수 있는 전역 접촉점을 제공하는 패턴
- 인스턴스 생성(new)을 외부에서 직접 할 수 없게 하고 내부에서만 하는 구조로 하여 인스턴스 개수를 1개로 통제함
- 인스턴스가 여러 개 있을 필요가 없는 경우에 적용한다.
- 예: 배경음악 플레이어, 윈도우 관리자, 프린터 스풀러, 쓰레드풀 관리자, DB 커넥션 풀 관리자, 캐시, 로거, 팩토리
- (옵션) 생성자를 private으로 선언하면 상속 불가[2]
예제 (기본형)
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
인스턴스를 사용라면 다음과 같이 호출.
Singleton singleton = Singleton.getInstance();
예제 2
public class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) instance = new Singleton();
}
}
return instance;
}
}