반응형

출처: http://stackoverflow.com/questions/5171661/singleton-pattern-in-c


싱글턴 패턴은 객체마다 각기 다른 값을 가지는 것이 아니라,

객체가 하나의 값을 공유하는 경우를 말한다.


C에서는 전역변수를 대신하기 위한 방법으로도 사용된다.


구현은 다음과 같이 한다.


// singleton.h typedef struct data data; data* getInstance(); char* getName(data* d); int getNo(data* d); void setName(data* d, char* name); void setNo(data* d, int no); // singleton.c typedef struct data { char* name; int no; } data; data* getInstance() { static data* d = NULL; // 한 번 변수의 값이 기록되면 // 프로그램이 종료될 때까지 같은 주소에 저장된다. if (d == NULL) { // 초기화를 위한 코드 입력 } }

이러고 main에서 싱글턴 변수를 생성한 다음 함수에 싱글턴 변수를 인자로 넘기면서 사용할 수 있다.

만약 main 함수의 위치가 getInstance() 함수가 정의된 위치가 아니라면

 data 구조체의 name 멤버 등에 접근하기 위헌 get, set 함수가 필요할 것이다.

그럴 때 main에서 생성한 data 구조체를 매개변수로 넘겨주어 접근하게 할 수 있다.


싱글턴을 알게 되면서 디자인 패턴도 공부를 해야되겠다는 생각이 든다.

반응형
Posted by 애콜라이트
l

free counters