본 포스트는 인프런 백기선 님의 강의 코딩으로 학습하는 GoF의 디자인 패턴 를 듣고 간략하게 정리하는 글입니다.

✔ 정의

인스턴스를 오직 한개만 제공하는 클래스
ex) 설정

싱글톤 패턴을 구현하는 다섯가지 방법

1. private 생성자 + static method

  • 왜 private 생성자?

  • 왜 static method?

  • getInstance() 가 멀티 쓰레드 환경에서 안전하지 않은 이유?

2. 동기화(synchronized) 사용

3. 이른 초기화 사용

👎 : 생성하는데 많은 자원이 드는 경우, 만든 후 쓰지 않으면 무쓸모

4. double checked locking 사용

  • 멀티 쓰레드가 빈번한 경우 좋음
    👍 : 필요한 시점에 만들어 사용

5. static inner 클래스 사용⭐ (권장)

private Settings() {}
private static class SettingsHolder {
	private static final Settings SETTING = new Settings();
}

public static Settings getInstance() {
	return SettingsHolder.SETTINGS;
}

static final을 썼는데 왜 지연 초기화라고 볼 수 있는가?

0개의 댓글