Plite
전자오락 공방
Plite
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 프로젝트 (18)
      • 완성 프로젝트 (3)
      • 프로젝트 진행 내역 (15)
    • 공부 및 정리 (241)
      • 백준 코드 (222)
      • C++ (8)
      • DirectX (2)
      • Unreal Engine (6)
      • 프로그래밍 패턴 (3)
    • 기타 (12)
      • 기타 주저리 (10)
    • 게임과 취미 (1)
    • 대문 (1)

블로그 메뉴

  • 홈
  • 프로젝트
  • 취미, 일상
  • 백준 프로필

공지사항

  • [Read Me]
  • 제 블로그에 방문하신 것을 환영합니다.

인기 글

태그

  • 수학
  • 트라이
  • 문자열
  • 유니온 파인드
  • 조합론
  • 최소 스패닝 트리
  • 기하
  • 브루트포스
  • KMP
  • 구현
  • 스택
  • 세그먼트 트리
  • 그래프
  • 위상 정렬
  • UC++
  • LCA
  • 투포인터
  • 이분탐색
  • 큐
  • 동적계획법
  • 백트래킹
  • C++
  • 백준
  • 정렬
  • 누적합
  • 분할정복
  • 우선순위큐
  • 트리
  • 정수론
  • SCC

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Plite

전자오락 공방

GOF - 싱글톤 패턴
공부 및 정리/프로그래밍 패턴

GOF - 싱글톤 패턴

2022. 10. 18. 15:38

* 싱글톤은 대체로 득보다 실이 많은 편입니다.

 

 

* 싱글톤의 장점

 

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
    '공부 및 정리/프로그래밍 패턴' 카테고리의 다른 글
    • GOF 프로그래밍 패턴 - 경량 패턴
    • GOF 프로그래밍 패턴 - 명령 패턴
    Plite
    Plite
    개발 일지, 게임 이야기 등을 적어두는 공간입니다.

    티스토리툴바