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