//1. Mayer'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);
public:
// 2. 오직 하나의 객체만을 반환하는 정적 인터페이스를 추가한다.
static Cursor& getInstance() {
static Cursor instance; //정적 지역변수로 선언(.data)
return instance;
}
void foo() {
Cursor& c1=getInstance();
Cursor c2=c1; // 복사가 되는 것을 막기 위해 복사생성자를 priate로 선언만 한다.
Cursor c3;
c3=c1; // 대입이 되는 것을 막기 위해 대입연산자도 private로 선언
}
};
int main(void) {
Cursor& c1 = Cursor::getInstance();
Cursor& c2 = Cursor::getInstance();
cout << "&c1 = " << &c1 << endl;
cout << "&c2 = " << &c2 << endl;
//c1.foo();
return 0;
}
'Developer > Design Patterns' 카테고리의 다른 글
메크로를 이용한 SingleTon 자동생성 (1) | 2014.05.17 |
---|---|
GoF's Singleton (객체를 힙에 생성) (0) | 2014.05.17 |
C++ interface (0) | 2014.05.17 |
정적바인딩 / 동적바인딩 (0) | 2014.05.17 |
C++ Thread 클래스 구현 (0) | 2014.05.17 |