이전 포스트에서 설명한 state machine 은 현재 application의 상태를 상황에 맞게 active app state를 변경하여 해당 상태에 있을 경우 들어오는 이벤트, 메시지 처리, 이외 요청들을 처리하도록 만듭니다. 또한 원한다면 현재 상태(state)에서 다른 상태(state)로 전환을 할 수도 있습니다. C언어에서는 몇가지 코딩의 제약이 있지만 간단하게 state machine을 만들 수 있으며 우리는 이것을 app state(혹은 app)이라고 편하게 부르도록 하겠습니다. app state 들은 간략하게 다음의 필수 요건이 있습니다. app을 생성,삭제, 전환등을 할 controller 필요 app은 이벤트를 받을 수 있음 app끼리 전환 할 수 있음 app은 하나만 동작 가..
개발자는 어떤 목적으로 프로그램을 만듭니다. 그 프로그램은 목적을 수행하기 위해 부단히 노력하며 자원을 소모합니다. 목적을 수행하는 프로그램이 다수에 의해 사용되고 사용자들을 그 프로그램에 종속시키고자 한다면 플랫폼을 만들면 됩니다. 플랫폼은 API로 이루어져 있습니다. 결국 가장 상위의 개발자는 플랫폼 위에 API를 사용하면서 자신의 어플리케이션을 그 위에 얹으면 되는 형식으로 개발하게 됩니다. 아래는 이러한 플랫폼을 개발하기 위해서 API를 설계하고자 할 때 자주 사용하는 패턴들입니다. ObserverTemplateWrapperAdapter 플랫폼 개발자는 사용자(상위 개발자)에게 미리 제공하고자 하는 기능의 interface를 구현해야하며, Hook나 Add On을 이벤트를 넣을 수 있도록 아키텍쳐..
[네이버 지식백과]singleton 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주)) 프로그램 전체적으로 한개의 자원을 사용하는 경우 적용할 수 있는 Singleton. 예를 들면 GPS, G sensor, 온도센서와 같은 모듈은 보통 한개의 제품에 한개씩 들어있습니다. 각각의 모듈을 초기화하고 사용하는 C Class를 만든다면 다음과 같이 Singleton을 활용할 수 있습니다. #define null (void *)0 typedef struct { InitFunction init; OpenFunction open; ConnetFunction connection; //... (필요시 추가) }Device; Device *getGpsInstance() { static D..
[네이버 지식백과]observer 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주))Observer 패턴은 정말 많이 사용하는 패턴입니다. 자바 프레임워크에서도 쉽게 찾을 수 있습니다. 우리가 흔히 쓰는 Java C#에서 Event Listener 들이 이 종류에 속하지요.Observer pattern을 예제를 위해서는 observer_t: 관찰자 Structure calculate_temperature : 온도를 측정하는 루틴 display_degree_handler : 화면에 측정된 온도를 표시하는 루틴 file_write_degree_handler : 파일에 측정된 온도를 표시하는 루틴 우선 헤더를 보겠습니다.observer_handler_t 가 바로 관찰자 콜백함수..
[네이버 지식백과]state 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주)) 스테이트 패턴은 좀 헷갈리는 부분이 있습니다. 대부분의 패턴은 if 문과 같이 버그를 유지보수나 버그를 양산하기 쉬운 코드를 없애고 확장하기 쉽게 하도록 구조를 가져갑니다. 이중 스테이트 패턴은 각 상태가 바뀔 때 마다 늘어나는 if문을 없애는 패턴입니다. 즉 상태들 끼리 서로의 상태를 바꿔가며 동작하기 때문에 유지보수도 쉽고 확장도 용이합니다. 그러나 상태변화에 대한 명확한 이해와 구조를 어떻게 가져가야 할지에 대한 고민이 필요합니다. 다소 생소하게 보일지 모르지만 한번 구현해 보도록 하겠습니다.예제는 아주 단순한 불을 끄고 켜고하는 기능을 스테이트 패턴으로 구현해 보았습니다. 실제로 구동해..