본문 바로가기
CS

[디자인패턴] 싱글톤

by 크라00 2024. 10. 4.

주요 특징

  1. 인스턴스가 하나만 존재: 클래스에서 단 하나의 인스턴스만 생성되어야 합니다.
  2. 글로벌 접근: 싱글톤 인스턴스에 전역에서 접근할 수 있어야 합니다.
  3. 게으른 초기화(Lazy Initialization): 인스턴스가 필요할 때까지 생성하지 않고, 최초 접근 시에만 인스턴스를 생성하는 방식입니다.

장점

  • 시스템 전체에서 공유 자원을 효율적으로 관리할 수 있습니다. (예: 데이터베이스 연결, 로그 처리 등)
  • 여러 인스턴스가 존재할 필요가 없는 경우, 메모리 낭비를 줄일 수 있습니다.
  • 객체 간 동기화 문제가 해결될 수 있습니다. (단일 인스턴스 사용으로 경쟁 조건을 예방)

단점

  • 싱글톤 패턴은 전역 상태를 가지므로, 프로그램의 결합도가 높아질 수 있습니다.
  • 멀티스레드 환경에서 안전하지 않을 수 있으므로 동기화 처리가 필요합니다.
  • 테스트가 어려워질 수 있으며, 유연성이 떨어질 수 있습니다.

 

public class Singleton {
    // 유일한 인스턴스를 저장할 정적 변수
    private static Singleton instance;
    
    // private 생성자를 통해 외부에서 인스턴스 생성 불가
    private Singleton() {}

    // 싱글톤 인스턴스를 반환하는 메서드
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton(); // 최초 호출 시에만 인스턴스 생성
        }
        return instance;
    }
}

'CS' 카테고리의 다른 글

[React Native] Bridge ( 브릿지 )  (0) 2024.11.05
[Basic] Session & Cookie  (1) 2024.10.07
[Basic] 프론트엔드 XSS 보안  (0) 2024.10.02
[Basic] Client Side Rendering vs Sever Side Rendering  (2) 2024.09.26
[Basic] SPA ( Single Page Application )  (2) 2024.09.25