싱글톤 패턴

예전에 자주 쓰다가 최근엔 잘 쓰지 않던 싱글톤 패턴이 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.메소드이름();

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


Comments

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

  1. gma…저위에 어째서 그것만 빨간색이란 것이냐…

    1. 자네가 좋아하는 Blood 색 아닌가…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다