* 싱글톤은 대체로 득보다 실이 많은 편입니다.
* 싱글톤의 장점
1. 런타임 때 초기화 됩니다. -> 사용하지 않으면 초기화하지 않습니다.
2. 어디서나 참조가 가능하기 때문에 매니저 타입 객체에 편리합니다.
* 단점
1. 전역변수 :
- 타인이 코드를 읽기 힘들게 합니다.
- 커플링을 조장합니다. (순환 참조 등)
- 멀티 스레딩에 아주 취약합니다. (교착 상태 발생 위험)
2. 느린 초기화 :
- 게임에서 언제 초기화 될지 모른다는 것은 위험합니다.
- 초기화 할 때 딜레이를 일으킬 수 있습니다.
//꼭 싱글톤이 필요한가..?
class World
{
private :
World();
~World();
private:
static World* Instance = nullptr;
public:
static World* Get()
{
if(Instance == nullptr)
return Instance = new World();
return Instance;
}
void Open()
{
lock();
bOpened = true;
unlock();
}
bool GetOpened()
{
return bOpened;
}
private:
bool bOpened;
};
- 다음과 같이 싱글톤 없이도 같은 기능을 만들 수 있습니다.
- 싱글톤은 상황이 맞으면 유용한 패턴이지만,
위험성이 큰 만큼 잘 사용하지 않을 생각이므로 짧게 정리합니다.
'공부 및 정리 > 프로그래밍 패턴' 카테고리의 다른 글
GOF 프로그래밍 패턴 - 경량 패턴 (0) | 2022.11.12 |
---|---|
GOF 프로그래밍 패턴 - 명령 패턴 (0) | 2022.11.12 |