반응형

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


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

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


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


구현은 다음과 같이 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<p>// 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) {
        // 초기화를 위한 코드 입력
    }
}
</p>

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

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

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

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


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

반응형
Posted by 애콜라이트
l

free counters