知识卡片
撤销依赖状态
内容
可撤销命令不仅要知道如何执行,还要保存恢复旧状态所需的信息。发散:撤销不是执行的反向按钮,而是一份状态恢复契约,设计时要提前决定保存粒度。
参考来源
- 位置:第5章《行为型模式》5.2节「Command(命令)」9.实现第2点「支持撤销和重做」(源文件:_epub-src/OEBPS/Text/part0082.xhtml)
- 结论依据:原文明确说明支持撤销和重做需要ConcreteCommand类存储额外的状态信息,包括接收者对象、操作的参数以及操作改变的那些值,直接支持卡片对可撤销命令不仅要知道如何执行、还要保存恢复旧状态所需信息的论述。
- 原始内容:"如果Command提供方法逆转它们操作的执行……就可支持撤销和重做功能。为达到这个目的,ConcreteCommand类可能需要存储额外的状态信息。这个状态包括:接收者对象……接收者执行的操作的参数……如果处理请求的操作会改变接收者对象中的某些值,那么这些值也必须先存储起来。"