Search

'Singleton'에 해당되는 글 1건

  1. 2012.04.18 Singleton Sample

Singleton Sample

C++/Pattern 2012. 4. 18. 12:54 Posted by 퓨어레드

Java 에서는 쉽게 구현되는 싱글톤 패턴이지만.. C++ 에서는 조금 신경을 써야겠다;;
 
일단 Header

 

class CSingleton
{
 
private :
 
    // 유일한 인스턴스를 유지하기 위해 클래스 포인터 선언.. 인스턴스에 종속되면 안되므로 static 으로 해주는 센스~ 
    // 외부의 접근을 막기 위해 private 으로 선언해준다.
    static CSingleton * pSingleton; 
 
protected :
 
    // 생성자는 클래스를 이용하는 외부 모듈에서 생성하는걸 방지하기 위해 protected 로 선언한다 (Private 로 해도 무관..)
    CWordLibrary (void);
 
public :
 
    // getInstance 라는 Static 함수로 외부모듈에서 이 클래스를 사용할수 있는 인터페이스를 제공해준다.
    static CWordLibrary * getInstance ();
 
    // getInstance 부분에서 new 로 클래스를 생성하기 때문에 delete 를 해준 코드를 넣어주기 위해 freeInstance 를 만들어준다.
 
    // 이 작업을 하지 않는다면.. 메모리 누수가 날 확률이 많이 때문에 신경써줘야한다. C++ 은 자바가 아니기 때문 ㅋ
    static void freeInstance ();
 
    // 나머지 클래스 구성들 .....

}

 

해더는 이런식으로 구성해주면 ㅇㅋ

이제는 Body 부분을 구현해보자
 
생성자는 별 코드가 없기 때문에 Pass
 
중요한 클래스 포인터 초기화 코드

 

// 많은 사람들이 잘 까먹는 문법이다.. 꼭 해주길.. Release 모드로 컴파일하면 문제야 없겠지만 .Debug 모드에서 문제가 발생한 확률 99.9999% ㅋ
CSingleton * CSingleton::pWordLibrary = NULL;

CSingleton * CSingleton::getInstance ()
{
	if (pSingleton == NULL)
		pSingleton = new CSingleton ();
 
	return pSingleton;
}

void CSingleton::freeInstance ()
{
	if (pSingleton != NULL)
		delete pSingleton;

	pSingleton = NULL;
}