我在应用程序的设计过程中,我想使用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