요즘 OO에 메시지 이야기가 좀 보이는데.. 나는 그 메시지는 잘 모르고, 메시지 디스패처 패턴은 종종 썼었던 것 같다. 항상 그렇듯이 누군가의 코드에서 이거 좋네 나도 고고~ 하다가 나중에서야 이름을 알았따.
요점은 요청을 원하는 놈과 받아들일 놈이 서로 각각의 의존성이 있는 함수로 통신을 하지 않고 메시지 디스패처에 걍 막 확 던져불면 받을 놈에게 가져다 준다는 거다. 새로운 기능을 추가할 때 줄 놈 받을 놈 각각 따져 디비지 않아도 되는 편.. 기능이 완성되지 않았따 해도 잘 씹어 먹을 수 있따..
한 편으로 메시지 디스패처는 겁나 긴 스윗치 케이스 구문의 빅 똥을 낳기도 하는데, 배열 인덱스와 enum으로 잘 뽀갠 케이스도 있는 반면, 윈도우 CE .NET 커널에는 팔만대장경급 스윗치 케이스가 있었던 것 같다.
예를 들면 이렇다.
while(1) {
새 메시지가 들어왔는가? { 커맨드, 데이터 (작은 데이터, 긴 데이터 레퍼런스) }
switch (커맨드) {
case 청기올려:
....
case 밥먹어:
...
}
아 뭐 그렇다고요..