C++

디자인 패턴 - 싱글톤 패턴

Vetenir 2025. 1. 6. 21:23

디자인 패턴

개발 시 반복적으로 등장하는 문제를 해결하기 위한 일반화된 해결책.

 

 

싱글톤 패턴

객체의 인스턴스가 오직 1개만 생성하는 패턴.

 

예를 들어 플레이어가 제어하는 캐릭터처럼 1개만 존재해야하는 인스턴스를

다른 사람이 코드를 작성하다가 실수로 또 캐릭터를 생성하는 코드를 작성하는 오류를 막을 수 있는 것이

싱글톤 패턴입니다.

 

 

싱글톤 패턴 구조

1. 정적 멤버 변수

클래스트의 유일한 인스턴스를 저장합니다.

 

2. private 생성자

생성자를 private로 선언하여 외부에서 인스턴스를 생성하지 못하게 합니다.

 

3. 정적 메서드

정적 메서드를 통해 클래스의 유일한 인스턴스에 접근할 수 있도록 합니다.

 

 

class Singleton {
private:
    static Singleton* instance;
    Singleton() {}
    Singleton(const Singleton&);            // 복사 생성자 삭제
    Singleton& operator=(const Singleton&); // 복사 대입 연산자 삭제

 

 

class Singleton {
private:
    static Singleton* instance;
    Singleton() {}
public:
    Singleton(const Singleton&) = delete;            // 복사 생성자 삭제
    Singleton& operator=(const Singleton&) = delete; // 복사 대입 연산자 삭제

이렇게 작성 할 수도 있습니다.

 

  • 복사 생성자

객체를 복사하여 새로운 객체를 생성하는 데 사용됩니다.

  • 대입 연산자

이미 생성된 객체에 다른 객체의 값을 대입할 때 사용됩니다.