5. 하나뿐인 특별한 객체 만들기: 싱글턴 패턴

싱글턴 패턴 정의

<aside> 💡 싱글턴 패턴(Singleton pattern)은 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다.

</aside>

전역 변수와의 차이점

고전적인 싱글턴 패턴 구현법

public class Singleton {
	private static Singleton uniqueInstance; // 하나뿐인 인스턴스가 저장되는 정적 변수

	// 기타 인스턴스 변수

	private Singleton() {} // 생성자를 private으로 선언

	public static Singleton getInstance() {
		if (uniqueInstance == null) {
			uniqueInstance = new Singleton();
		}
		return uniqueInstance;
	}

	// 기타 메소드
}

멀티스레딩 문제와 해결방법

스크린샷 2023-05-15 오전 2.29.32.png

public class Singleton {
	private static Singleton uniqueInstance; // 하나뿐인 인스턴스가 저장되는 정적 변수

	// 기타 인스턴스 변수

	private Singleton() {} // 생성자를 private으로 선언

	public static **synchronized** Singleton getInstance() {
		if (uniqueInstance == null) {
			uniqueInstance = new Singleton();
		}
		return uniqueInstance;
	}

	// 기타 메소드
}