GameDevelop/Notes

싱글톤 패턴 (Singleton Pattern)

Une_ 2026. 1. 11. 23:29

 

1. 한 줄 정의

싱글톤 패턴은
클래스의 인스턴스를 오직 하나만 생성하도록 보장하고,
전역 접근 지점을 제공하는 디자인 패턴이다.

 

2. 왜 싱글톤을 쓰는가?

다음과 같은 시스템은 하나만 존재해야 한다.

  • 게임 매니저
  • 입력 시스템
  • 사운드 매니저
  • 설정(Config) 관리자

👉 여러 개가 생기면 상태 불일치 문제 발생

 

3. 기본 구현 방식 (C++)

 
class GameManager
{
public:
    static GameManager& Get()
    {
        static GameManager Instance;
        return Instance;
    }

private:
    GameManager() {}
};

 

특징

  • 정적 지역 변수 사용
  • 프로그램 종료 시 자동 소멸
  • C++11 이후 스레드 안전 보장

 

4. 싱글톤의 핵심 요소

  1. 생성자 private
  2. 복사/대입 금지
  3. 전역 접근 함수 제공
GameManager(const GameManager&) = delete;
GameManager& operator=(const GameManager&) = delete;

 

5. 장점

유일성 보장 인스턴스 1개
접근 편의 어디서나 접근
상태 관리 전역 상태 유지

 

6. 단점

전역 변수화 의존성 숨김
결합도 증가 코드 확장성 저하
수명 관리 순서 문제 발생

👉 남용은 설계 악취

 

7. 게임 개발에서의 사용 예

  • InputManager
  • AudioManager
  • NetworkManager
  • SaveSystem

※ 하지만 무조건 싱글톤은 위험

 

9. 요약

싱글톤은 전역 접근이 필요한 단일 시스템에 유용하지만,
클래스 사이의 의존성, 테스트의 어려움 등으로 신중하게 사용해야 합니다.

'GameDevelop > Notes' 카테고리의 다른 글

함수 포인터, 함수 객체, 람다  (0) 2026.01.20
렌더링 파이프라인  (0) 2026.01.20
옵저버 패턴 (Observer Pattern)  (0) 2026.01.11
가상 함수 테이블 (Virtual Table, vtable)  (0) 2026.01.11
해시테이블과 해시충돌  (0) 2026.01.09