1. 한 줄 정의
싱글톤 패턴은
클래스의 인스턴스를 오직 하나만 생성하도록 보장하고,
전역 접근 지점을 제공하는 디자인 패턴이다.
2. 왜 싱글톤을 쓰는가?
다음과 같은 시스템은 하나만 존재해야 한다.
- 게임 매니저
- 입력 시스템
- 사운드 매니저
- 설정(Config) 관리자
👉 여러 개가 생기면 상태 불일치 문제 발생
3. 기본 구현 방식 (C++)
class GameManager
{
public:
static GameManager& Get()
{
static GameManager Instance;
return Instance;
}
private:
GameManager() {}
};
특징
- 정적 지역 변수 사용
- 프로그램 종료 시 자동 소멸
- C++11 이후 스레드 안전 보장
4. 싱글톤의 핵심 요소
- 생성자 private
- 복사/대입 금지
- 전역 접근 함수 제공
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 |