2009-10-19 68 views

回答

2

IMO,Command模式被濫用於這種情況。如果命令完全是瞬態的 - 你不會存儲或操作對象 - 那麼增加複雜性,目標代碼開銷和使用命令樣板文件沒有多大意義。

更合適的方法是簡單的開關和方法調用。也許你可能希望從實現中分離出你正在調用的接口,儘管稍後可以輕鬆完成(如果你喜歡測試或者跟蹤,你可能會比以後做得更快)。如果鍵可以更改,則從輸入值到動作值的簡單映射應該很簡單。

+0

謝謝湯姆 - 我認爲命令模式可能會過度工程它一點。 我正在考慮有一個輸入處理程序類,它接受輸入,在Map中查找相應的鍵,並嘗試在另一個類中通過Reflection調用Maps值方法,例如 KEY_A,performMoveLeftAction() KEY_S,performMoveRightAction() KEY_SPACE,performFireAction() 等 地圖可以從文件加載,並允許進行配置。 這聽起來似乎合理,它是否符合任何特定的模式?它看起來有點像削減訪問者模式。 – Amoeba 2009-10-20 09:24:28

1

不知道更多關於輸入的內容,可能值得看看Interpreter pattern來讀取和解析輸入,再加上命令模式以實際執行命令。

1

在命令模式中,最好使命令不可變,這意味着沒有運行時輸入。不要讓問題複雜化。你所需要做的就是實時接受輸入並以某種方式解釋它(如果你設置了模式,請參閱托馬斯的小貼士)。如果你試圖消除一個大的switch語句或者大的if-else塊,抽象工廠模式可能是值得的。