- class diagram
- sequence diagram
在實際應用方面, 可以想像一下我們到一家餐廳點餐後的流程, 其實就很像command pattern裡所說的, 首先:
- 客戶(client)進到店裡, 坐下準備點餐
- 服務生(Invoker)開始為顧客點餐(new command())
- 客戶點了n樣菜, 於是服務生記下來(SetCommand())
- 服務生把點菜單送到廚房(execute())給廚師(Receiver)準備做菜(action())
真正在大型開發案裡, 這種模式還算常被用到, 首先我們開了一個介面給外部的人呼叫, 但為了統一介面, 我們通常只會使用一個export function, 像是RetCode ExecuteCommand(long CMD_ID, const void* input, void* output), 接下來會在ExecuteCommand裡用switch case來dispatch command, 到這一部為止, 就可以使用command模式來包裝, 把執行ExecuteCommand當成是client來setCommand, 後面內部的實作就用command模式包起來, 如此一來一個command對應一個command class, 要新增或是改變receiver的action也就方便許多, 不同的command也可以有不同的receiver來action()。
沒有留言:
張貼留言