C++/디자인패턴

[C++] 생성 패턴/싱글톤 패턴

programmer-faust 2025. 6. 20. 23:16
  • 순서
    1. 싱글톤패턴이란?
    2. 싱글톤패턴의 사용예
    3. 싱글톤패턴의 장점과 단점
    4. 싱글톤패턴 사용시 고려사항
    5. 간단한 싱글톤패턴작성
  • 싱글톤패턴이란?
    1. Singleton패턴은 class의 instance가 단 하나만 존재하도록 보장하고, 전역적으로 접근할 수 있는 지점을 제공하는 디자인 패턴임.
  • 싱글톤패턴의 사용예
    1. DB
    2. 게임내부의 Manager
    3. Player(싱글 게임이라면)
  • 싱글톤패턴의 장점과 단점
    1. 장점
      • 전역 접근: 어디서든 같은 인스턴스에 접근 가능
      • 메모리 절약: 하나의 인스턴스만 생성되므로 메모리 관리에 효율적
      • 데이터 일관성: 전역 상태를 하나의 객체로 관리
    2. 단점
      • 테스트 어려움: 전역상태로 인해 단위 테스트가 복잡함
      • 결합도 증가: 여러 클래스가 Singleton에 의존하게됨
      • 멀티스레딩 문제: 스레드 안정성을 고려해야함
      • 확장성 문제: 나중에 여러 인스턴스가 필요할 때 구조 변경이 어려울 수 있음
  • 싱글톤패턴 사용시 고려사항
    1. 정말 하나만 필요한가? - 미래의 요구사항 변경 가능성 고려
    2. 스레드 안정성 - 멀티스레딩 환경에서 안전한 구현 필요
    3. 의존성 주입 - Singleton 대신 의존성 주입 패턴 고려
    4. 생명주기 관리 - 소멸 시점과 리소스 해제 고려
  • 간단한 싱글톤패턴 작성
(.h)
class Character
{
private:
    static Character* instance;
public:
    static Character* Get();
}

(.cpp)
Character* Character::instance = nullptr;
Character* Character::Get()
{
    //만약 instance가 생성되지 않았다면
    if (instance == nullptr)
    {
        instance = new Character(); //캐릭터 생성해주기
    }

    return instance;
}