디자인패턴 - 싱글톤

oasis·2023년 7월 9일

싱글톤

클래스의 인스턴스가 오직 하나만 생성되어야함을 보장하는 패턴

  • 인스턴스가 전역적으로 접근 가능함
  • 여러개의 인스턴스가 생성되지 않음


싱글톤 패턴의 구조

  • 프라이빗 생성자 : 다른 클래스에서 인스턴스 생성 못하게 막음
  • 정적 메서드(static method) :항상동일한 인스턴스 반환하는 정적메서드
  • 정적 변수 : 유일한 인스턴스를 저장한 정적 변수 선언

사용 이유

  1. 공유 리소스 접근
    • 로그출력, DB연결 등 공유 리소서 사용하는 경우 중복된 연결을 방지하고 일관된 상태 유지
  2. 리소스 절약
    • 재사용 → 자원(메모리, 프로세서 시간 등) 절약
  3. 제어된 인스턴스 생성
    • 예기치 않은 동작 방지, 일관된 상태 유지

예시

public class Singleton {
    private static Singleton instance;
    
    // private 생성자로 외부에서의 인스턴스 생성을 막음
    private Singleton() {
    }
    
    // 유일한 인스턴스를 반환하는 정적 메서드
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
    
    // 싱글톤의 동작을 테스트하기 위한 메서드
    public void doSomething() {
        System.out.println("Singleton is doing something.");
    }
}

0개의 댓글