我在應用程序的設計過程中,我想使用command pattern來撤消/重做。我對命令模式進行了一些研究,但唯一沒有得到的是:一個命令是否應該具有撤銷和重做方法,或者我應該製作兩個單獨的命令:一個用於撤消,一個用於重做,然後調用主要命令本身?實現命令模式
Q
實現命令模式
14
A
回答
11
命令對象本身應該實現撤銷/重做功能。
這些命令通常會從命令管理器維護的堆棧中彈出並彈出,以實現多級撤消。當執行命令時,它們被壓入堆棧,當它們撤消時,它們將從堆棧彈出。
備忘錄模式將與命令模式一起使用,它不是命令模式使用的替代品。它將用於維護撤銷操作所需的狀態。
2
相關問題
- 1. 使用resque實現命令模式
- 2. 實現命令模式和多態性
- 3. DDD命令模式實現細節 - 持久命令
- 4. Spring命令設計模式的默認實現
- 5. 是必要的,以實現mvvm模式中的命令android
- 6. 命令模式不是依賴倒置原理的實現嗎?
- 7. ASP.NET MVC的ActionResult如何實現命令模式
- 8. 如何在Java中實現命令模式?
- 9. Java:使用onComplete回調簡單實現命令模式?
- 10. 這只是命令模式的功能實現嗎?
- 11. Vim命令模式
- 12. 從命令模式
- 13. wpf命令模式
- 14. 實現命令隊列
- 15. 在MMVM中實現命令
- 16. 持久命令模式
- 17. VIM - 在命令模式
- 18. 命令模式 - 目的?
- 19. MVVM模式和Silverlight命令
- 20. sed的模式命令
- 21. 命令模式 - 返回值
- 22. 替換模式命令
- 23. 命令模式說明
- 24. 這是命令模式嗎?
- 25. MVC和命令模式
- 26. DTO /命令模式問題
- 27. Rust中的命令模式
- 28. AsynchTask和命令模式?
- 29. 橋樑+命令模式
- 30. 努力瞭解如何在Java中實現命令模式設計
我想補充說一個更好的解決方案不僅僅是一個簡單的堆棧。相反,您需要一個列表和對當前項目的引用。撤銷將參考移回,並*重做*將其前移。使用堆棧不會讓您重做。 – munificent 2010-02-08 23:34:53
我已經使用了2個堆棧,撤消和重做堆棧。如果撤銷某個操作,它將從撤消堆棧中彈出並將其推入重做堆棧。添加新動作是將新動作推入撤消堆棧並清除重做堆棧。 – Wout 2012-10-18 14:02:13