본문 바로가기
객체지향/디자인패턴

싱글톤 패턴

by 정재익 2025. 12. 21.

어떤 클래스를 애플리케이션에서 제한된 인스턴수 개수 또는 하나만 존재하도록 강제함
이렇게 만들어지는 클래스의 오브텍트는 애플리케이션 내에서 전역적 접근가능
단일 오브젝트만 존재해야하고 이것을 애플리켕션의 여러 곳에서 공유하는 경우에 사용

 

public class AppConfig {
    
    private static final AppConfig singleton = new AppConfig();

    private final Map<String, String> configs = new HashMap<>();

    public static AppConfig getSingleton() {
        return singleton;
    }


    // 현재는 아무나 생성 가능!
    private AppConfig() {
        configs.put("pg.merchant.id", "SHOP_001");
        configs.put("discount.max.percent", "30");
        configs.put("notification.email.enabled", "true");
        configs.put("notification.sms.enabled", "true");
        configs.put("notification.slack.enabled", "false");
    }

    public String getConfig(String key) {
        return configs.get(key);
    }

    public void setConfig(String key, String value) {
        configs.put(key, value);
    }
}

 

생성자 private
자신과 같은 타입의 스택틱 필드 정의 생성된 싱글톤 오브젝트 저장위함
스태틱 팩토리 메소드 생성
이미 만들어진 오브젝트 반환


단점 테스트하기 어려움 서버환경에서 하나만 만들어지는것을 보장못함
private 생성자라 상속 불가  어디서든 스택틱 메소드로 접근이 가능하여 전역 상태가 될수있음

'객체지향 > 디자인패턴' 카테고리의 다른 글

템플릿 콜백 패턴  (0) 2026.02.18
전략 패턴  (0) 2026.02.18
템플릿 메서드 패턴  (0) 2026.02.15
옵저버 패턴  (0) 2026.02.12
프록시 패턴  (0) 2026.01.04