package CHAPTER05;

//싱글톤 패턴 적용 클래스
class ConfigManager {

	private static ConfigManager instance; // 유일한 인스턴스를 저장하는 static 변수

	// private 생성자: 외부에서 인스턴스 생성 방지
	private ConfigManager() {
		System.out.println("ConfigManager 객체가 생성되었습니다.");
	}

	// getInstance() 메서드를 통해 유일한 인스턴스를 반환
	public static ConfigManager getInstance() {
		if (instance == null) { // 처음 호출될 때만 객체 생성
			instance = new ConfigManager();
		} else {
			System.out.println("이미 생성된 객체를 반환합니다.");
		}
		return instance; // 동일한 인스턴스를 반환
	}
}

//싱글톤 패턴 테스트
public class LAB03_Singleton {
	public static void main(String[] args) {
		System.out.println("첫 번째 객체 생성 시도...");
        ConfigManager instance1 = ConfigManager.getInstance(); // 첫 번째 호출 → 객체 생성

        System.out.println("\n두 번째 객체 생성 시도...");
        ConfigManager instance2 = ConfigManager.getInstance(); // 두 번째 호출 → 기존 객체 반환

        // 두 객체가 동일한지 비교 (싱글톤 패턴이 제대로 적용되었는지 확인)
        System.out.println("\n첫 번째 인스턴스와 두 번째 인스턴스가 같은 객체입니까? " + (instance1 == instance2));
	}
}
