이번장에서는 프로그램 전체적으로 한개의 자원을 사용하는 경우 적용할 수 있는 디자인 패턴 Singleton 패턴에 대해 알아보겠습니다.
예를 들면 GPS, G sensor, 온도센서와 같은 모듈은 보통 한개의 제품에 한개씩 들어있습니다. 각각의 모듈을 초기화하고 사용하는 C 언어 Class를 만든다면 다음과 같이 Singleton을 활용할 수 있습니다.
#define null (void *)0
typedef struct
{
init_function_t init;
open_function_t open;
connect_function_t connection;
//... (필요시 추가)
}device_t;
device_t *get_gps_instance()
{
static device_t *instance = null;
if(&instance == null)
{
instance = malloc(sizeof(*instance));
instance->init = gps_init_function;
instance->open = gps_open_function;
instance->connetion = gps_connection;
}
return instance;
}
디자인 패턴은 코딩의 일관성을 유지해 줍니다. OPEN, CLOSE, INIT, CONNECT, READ, WRITE등으로 사용하면 일치하는 Device 들이 많이 있습니다.
위와 같은 Device Struct를 만들어 주면 코드가 일관성을 유지 할 수 있어 코드를 공유하고자하는 다른 사람이라든가 오랜만에 코드를 볼 때에도 한 눈에 코딩을 이해할 수 있게 됩니다. 더욱이 Device가 바뀌어도 함수 명은 바뀌지 않기 때문에 어플리케이션 구현단에서도 소프트웨어 수정을 최소화 할 수 있게 됩니다.
감사합니다.
'▶ C Application > 디자인 패턴' 카테고리의 다른 글
Template method 패턴 (0) | 2023.12.17 |
---|---|
Iterator 패턴 - Queue (3) | 2023.12.16 |
Observer 패턴 (0) | 2023.12.14 |
Strategy 패턴 (0) | 2023.12.12 |
Message 기반 프로세스 (0) | 2023.12.10 |