回答
IMO,Command模式被濫用於這種情況。如果命令完全是瞬態的 - 你不會存儲或操作對象 - 那麼增加複雜性,目標代碼開銷和使用命令樣板文件沒有多大意義。
更合適的方法是簡單的開關和方法調用。也許你可能希望從實現中分離出你正在調用的接口,儘管稍後可以輕鬆完成(如果你喜歡測試或者跟蹤,你可能會比以後做得更快)。如果鍵可以更改,則從輸入值到動作值的簡單映射應該很簡單。
謝謝湯姆 - 我認爲命令模式可能會過度工程它一點。 我正在考慮有一個輸入處理程序類,它接受輸入,在Map中查找相應的鍵,並嘗試在另一個類中通過Reflection調用Maps值方法,例如 KEY_A,performMoveLeftAction() KEY_S,performMoveRightAction() KEY_SPACE,performFireAction() 等 地圖可以從文件加載,並允許進行配置。 這聽起來似乎合理,它是否符合任何特定的模式?它看起來有點像削減訪問者模式。 – Amoeba 2009-10-20 09:24:28
不知道更多關於輸入的內容,可能值得看看Interpreter pattern來讀取和解析輸入,再加上命令模式以實際執行命令。
該技術通常被稱爲「double dispatch」,但解釋器模式描述了一般模式。
在命令模式中,最好使命令不可變,這意味着沒有運行時輸入。不要讓問題複雜化。你所需要做的就是實時接受輸入並以某種方式解釋它(如果你設置了模式,請參閱托馬斯的小貼士)。如果你試圖消除一個大的switch語句或者大的if-else塊,抽象工廠模式可能是值得的。
- 1. 輸入複用的C++設計模式?
- 2. haskell方式接受用戶輸入的用戶輸入次數?
- 3. 適用於輸入的轉換鏈的設計模式
- 4. Xcode:調試時輸入用戶輸入
- 5. 按用戶輸入設置輸入值
- 6. 用輸入和輸出參數調用SP的C#方法
- 7. 計算用戶的輸入
- 8. 用戶輸入和輸出
- 9. 用戶輸入的Python公式計算
- 10. 基於用戶輸入的回調
- 11. 調用onTextChanged()方法時未調用setText()或用戶輸入
- 12. 基於用戶輸入的設置器方法
- 13. 用於從用戶獲取xpath輸入的設計API
- 14. 輸入和用戶輸入驗證
- 15. MVVM模式,用於將ViewModel中的中間用戶輸入設置爲模型
- 16. 找到用於java編程的用戶輸入值的模式
- 17. 基於用戶輸入的Javascript倒計時和countup計時器
- 18. 用戶輸入和不同方法計算平均值
- 19. 評估用戶輸入的Rails方法
- 20. 用戶輸入的Java運行方法
- 21. 要求用戶輸入的類方法
- 22. 確定從Java中的用戶輸入調用的方法
- 23. 基於用戶輸入
- 24. 如何使用用戶輸入調用方法
- 25. 用戶輸入處理模式
- 26. 模擬用戶輸入
- 27. 如何在ruby中的方法中調用用戶輸入
- 28. 來自用戶輸入的Java對象名稱方法調用
- 29. 如何獲取Ajax.ActionLink調用動作方法的用戶輸入?
- 30. UITextView中的用戶輸入調用委託方法兩次?
你能詳細說明一下你的命令輸入嗎? – 2009-10-19 15:32:16