Strategy 패턴

[네이버 지식백과] strategy 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주))


스트레티지 패턴은 아주 단순하면서도 여러가지 패턴중에 가장 유용한 패턴입니다. 사용법은 아주 간단합니다. 우선 interface를 만들고 원한는 때에 콘크리트 코드를 치환해서 사용하면 됩니다. 적절한 예제일지는 모르지만, 특정한 상황에서 uart를 spi로 변경하는 드라이버 예제를 보도록 하겠습니다. 

먼저 interface를 구현해보도록 하겠습니다. 

open, close, read, write 네가지를 만들었습니다. 필요하면 더 만들어도 되구요. read, write에는 addr 파라메타가 있는데, 혹시 메모리 접근시에 필요할 지도 몰라 넣었습니다. 물론 필요없으면 구현시에 사용하지 않아도 됩니다. 

다음 콘크리트 코드를 보겠습니다. uart, spi 두가지 입니다. 실제로는 두개의 c 파일로 구분되어야 합니다. 

먼저 uart 입니다. 실제로 uart open, close, read, write 를 입맛대로 구현하셔야 합니다. 


다음은 spi 콘크리트 코드 입니다. 거의 uart와 동일합니다. 마찬가지로 실제 구동을 위한 코드는 직접 구현하셔야 합니다.

특히 interrupt 를 사용하신다면 interrupt 발생시 위 드라이버의 read 부분을 호출하면 됩니다.   실제 호출 및 사용하는 코드를 살펴보도록 하겠습니다. 지난번에 만든 스케쥴러와 같이 작성해 보았습니다. 

char_driver = setup_uart_driver(); 부분에서 uart를 사용하고 메시지 MSG_TEST_2가 들어오면 spi로 드라이버가 교체되는 것을 볼 수 있습니다. 


이와 같이 런타임시에 전략을 수정할 수 있는것이 스트레티지 패턴입니다. 상당히 광범위하게 사용되기 때문에 알아두면 정말 좋습니다.








'▶ 이전글 > C Pattern' 카테고리의 다른 글

Singleton 패턴  (0) 2014.10.13
Template method 패턴  (0) 2014.10.02
Observer 패턴  (0) 2014.10.02
State 패턴  (4) 2014.10.02
C로 Class 억지로 만들기  (1) 2014.10.02