Design Patterns - sample - SingleTon

2016. 12. 1. 17:58IT-개발/C및C++

반응형

// C++ 템플릿을 활용해서 SingleTone 을 이렇게 자유롭게 잘 사용할 수 있을 줄이야~


// SingleTon

////////////////////////////////////////////////

#include <iostream>

using namespace std;

template <typename T>

class MySingleton

{

public:

MySingleton() {}

virtual ~MySingleton() {}

// 이 멤버를 통해서맊 생성이 가능하다.

static T* GetSingleton()

{

// 아직 생성이 되어 있지 않으면 생성한다.

if( NULL == _Singleton ) {

_Singleton = new T;

}

return ( _Singleton );

}

static void Release()

{

delete _Singleton;

_Singleton = NULL;

}

private:

static T* _Singleton;

};


template <typename T> T* MySingleton<T> ::_Singleton = NULL;

// 싱글톤 클래스 템플릿을 상속 받으면서 파라메터에 본 클래스를 넘긴다.

class MyObject : public MySingleton<MyObject>

{

public:

MyObject() : _nValue(10) {}

void SetValue( int Value ) { _nValue = Value;}

int GetValue() { return _nValue; }

private :

int _nValue;

};


void main()

{

MyObject* MyObj1 = MyObject::GetSingleton();

cout << MyObj1->GetValue() << endl;

// MyObj2는 Myobj1과 동일한 객체이다.

MyObject* MyObj2 = MyObject::GetSingleton();

MyObj2->SetValue(20);

cout << MyObj1->GetValue() << endl;

cout << MyObj2->GetValue() << endl;

}


좋은 Sample들은 자주 보고 활용하게 된다. 좋은지 아닌지는 개인의 판단.. ㅋ



'IT-개발 > C및C++' 카테고리의 다른 글

STL - list - Sample (1)  (0) 2016.12.02
STL - iterator 사용하기 sample  (0) 2016.12.01
argv / argc 에 대해_1  (0) 2016.04.26
전처리문... 한번씩 참고 (펌)  (0) 2016.03.07
함수포인터 - 콜백(callback) (펌)  (0) 2015.10.20