Skip to content

3주차 스터디 김성연 싱글톤 패턴

abiles edited this page Nov 2, 2014 · 1 revision

싱글톤 : 세상에서 단 하나뿐인 특별한 개체

by HeadFirst DesignPattern

조건

  • 특정 클래스에 대해서 객체 인스턴스가 최대 하나만 유지 되도록
  • 어디서든지 객체에 접근할 수 있도록

활용성

  • 클래스의 객체가 오직 하나여야 함을 보장하고, 잘 정의된 접근점으로 모든 사용자가 접근할 수 있도록 해야 할 때

장점

  • 유일하게 존재하는 객체로의 접근을 통제
  • 이름 공간을 좁힘 (전역변수를 사용할 때 보다 나은점)
  • 연산 및 표현의 정제를 허용 (싱글톤 클래스는 상속될 수 있고 상속된 서브클래스는 새로운 인스턴스를 만들 수 있다)
  • 인스턴스의 개수를 변경하기가 자유로워짐

구현

유의사항

  • 인스턴스가 유일함을 보장해야 함
//싱글톤으로 만들 EffectManagerClass

//EffectManager.h
Class EffectManager
{
public:
    // 전역으로 접근할 수 있는 함수, return 값이 EffectManager*
    static EffectManager* getInstance();
   
private:
    //유일한 객체를 저장하기 위한 정적 변수, 함수를 통해서 전역적으로 접근 가능한 멤버 변수
    static EffectManager* m_Instance;
    
    //class 외부에서의 접근을 막음
    EffectManager();
}

//EffectManager.cpp
//정적 멤버 변수 초기화
EffectManager* EffectManager::m_Instance = nullptr;

EffectManager* EffectManager::getInstance()
{ 
   if(m_Instance == nullptr)
   {
     m_Instance = new EffectManager();
   }
   return m_Instacne;
}
  • 위의 예제처럼 만들면 EffectManager의 객체를 getInstance라는 함수를 통해서 전역적으로 접근 할 수 있고

    이 객체는 오직 한 개로 유지된다.

Clone this wiki locally