Singleton 패턴

이번장에서는 프로그램 전체적으로 한개의 자원을 사용하는 경우 적용할 수 있는 디자인 패턴 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  (0) 2023.12.16
Observer 패턴  (0) 2023.12.14
Strategy 패턴  (0) 2023.12.12
Message 기반 프로세스  (0) 2023.12.10