싱글톤 패턴

예전에 자주 쓰다가 최근엔 잘 쓰지 않던 싱글톤 패턴이 More Effective C++ 책을 보다 보니 나왔다. 그래서 블로그 포스팅을 해봄.

원리는 객체를 단 하나만 생성하도록 한다는 간단한것.
실무에서 주로 쓰는곳은 어딜까 라는 의문이 들었는데 책에서는 프린터를 예로 들었다.
내가 쓴다면 아마 리소스매니저 같은곳에서 쓰지 않을까 하는 생각이 듬.

책에는 프렌드함수를 이용한것과 Static을 이용한 방법이 나왔는데 개인적으론 Static 방식이 더 좋은거 같다.
이유는 프렌드 함수를 쓰면 비주얼스튜디오 인텔리센스에서 안나온다.
여러 버전에서 테스트 해보진 않았는데 적어도 VC 6.0에선 안나온다. (vc 6.0+비주얼어시스트X)

코드는 간단하다. 생성자를 Private에 집어넣어서 일반적으로 객체가 생성되지 않게 막아버리고인스턴스를 받을수 있는 함수를 하나 만들어 주면 된다.

//헤더파일 부분
class CNuclearInstantEffect {
	public:
		static CNuclearInstantEffect& GetInstance();
	private:
		CNuclearInstantEffect();
};
#define SingletonNuInstatEffect  CNuclearInstantEffect::GetInstance()  //싱글톤구현

#define 하나 해주면 나중에 짧게 쓸 수 있어서 편함

//소스부분
CNuclearInstantEffect&
CNuclearInstantEffect::GetInstance(){
	static CNuclearInstantEffect p;
	return p;
}

이렇게 작성후 다른 소스에서 이 부분이 필요하다면 헤더파일을 추가 한 뒤에

SingletonNuInstatEffect.메소드이름();

이렇게 호출하면 언제 어디서나 단 하나의 객체만 생성된다.

크리에이티브 커먼즈 라이선스 Linsoo 의 저작물인 이 저작물은(는) 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 2개

댓글 달기

이메일 주소는 공개되지 않습니다.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.