반응형
생성패턴 - Singleton
해결하려는 문제
- 클래스의 인스턴스가 단 1개임을 보장해야함
- 인스턴스 생성을 제어할 수 있어야함
- 1개뿐인 인스턴스에 쉽게 접근할 수 있어야함 (feat. 글로벌)
클래스 다이어그램
Singleton
- singleton : Singleton
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
- Singleton()
+ getlnstance() : Singleton
Thread Safe를 해결하기 위한 volatile 방법
public class Singleton {
private static volatile Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
public class Main {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
}
}
더 좋은 해결 방법 ClassHolder 사용
public class Singleton {
private Singleton() {
}
private static class SingletonHolder {
private static final Singleton instance = new Singleton();
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
반응형
'cs > java-spring-boot' 카테고리의 다른 글
[Zero-base] 11-4. 팩토리(Factory) (0) | 2022.03.15 |
---|---|
[Zero-base] 11-3. 빌더(Builder) (0) | 2022.03.15 |
[Zero-base] 11-1. 디자인 패턴과 가독성 (0) | 2022.03.15 |
[Zero-base] 10-6. 의존성 다루기 (0) | 2022.03.12 |
[Zero-base] 8-7. 강좌 관리 - 파일 업로드 구현 (0) | 2022.03.03 |