//1. GoF's Singleton
//싱글톤 : 오직 하나의 인스턴스만을 생성하는 설계 기법
#include <iostream>
using namespace std;
class Cursor {
private:
// 1. private 생성자를 정의한다.
Cursor() {}
// 3. 복사생성자도 private 영역에 선언한다. (정의x)
// 대입연산자도 private 영역에 선언한다.
Cursor(const Cursor& c);
Cursor& operator=(const Cursor& c);
static Cursor* sInstance; // 객체를 힙에 생성(GoF)
public:
// 2. 오직 하나의 객체만을 반환하는 정적 인터페이스를 추가한다.
static Cursor& getInstance() {
if(sInstance==0)
sInstance=new Cursor;
return *sInstance;
}
};
Cursor* Cursor::sInstance;
int main(void) {
Cursor& c1 = Cursor::getInstance();
Cursor& c2 = Cursor::getInstance();
cout << "&c1 = " << &c1 << endl;
cout << "&c2 = " << &c2 << endl;
return 0;
}
'Developer > Design Patterns' 카테고리의 다른 글
Mutex를 이용한 싱글톤패턴 동기화 (0) | 2014.05.17 |
---|---|
메크로를 이용한 SingleTon 자동생성 (1) | 2014.05.17 |
Mayer's Singleton (객체를 정적변수로 선언) (0) | 2014.05.17 |
C++ interface (0) | 2014.05.17 |
정적바인딩 / 동적바인딩 (0) | 2014.05.17 |