-
Notifications
You must be signed in to change notification settings - Fork 5
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라는 함수를 통해서 전역적으로 접근 할 수 있고
이 객체는 오직 한 개로 유지된다.