//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;

}

Posted by No names
,