//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
Posted by No names
,