싱글톤 패턴


예전에 써보고 한동안 쓰질 않던 싱글톤 패턴
More Effective C++ 책을 보다 보니 나왔다
간만에 써 봤는데 역시 편리하군

원리는 프로그램의 객체를 단 하나만 생성해서 사용한다는것
주로 쓰는곳이 어딜까 생각하지만 MEC에서는 예를 프린터를 가지고 들었더군
내가 쓴다면 아마 리소스매니져 같은거에서 쓰지 않을까 싶군

일하다가 생각나서 적용해봤다.
MEC++ 책에는 프렌드 함수랑 static 을 이용하는 방법이 나왔는데.
static 방식을 쓰는게 더 좋은듯 싶다.

이유는 단 하나다.
프렌드 함수를 쓰면 비주얼스튜디오의 인텔리센스에 안나온다.
내가 타 버전에서 테스트 해보진 않았지만 VC6.0에서는 안나온다.
메소드들 일일이 타이핑 할려니 짜증나더군.

윈도플머라면 누구나 쓴다는 비주얼어시스트X에서도 역시 안나온다.
뭐 당연한게 아닐까 하는 생각.

코드는 간단하다.

생성자를 Private에 집어넣어서 일반적으로 객체가 생성되지 않게 막아버리고

인스턴스를 받을수 있는 함수를 하나 만들어 주던지 뭐 그러면 된다.

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

디파인문 하나 해주면 나중에 짧게 쓸 수 있어서 편하지 암 그렇고 말고

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

요거 해준담엔 아무데서나 이 부분이 필요하면 헤더파일 추가하고
SingletonNuInstatEffect.메소드이름();
이렇게 해주면 언제 어디서나 단 하나의 객체를 가지고 놀 수 있다. 좋구나 지화자~

p.s. 클래스명에 왜 nuclear가 들어가는진 묻지마라 다침 by Hwang
p.s.2 싱글톤인지 싱글레톤인지. 발음 확인안됨 by LiNs

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

“싱글톤 패턴”에 대한 2개의 댓글

댓글 남기기

이메일은 공개되지 않습니다.

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