【发布时间】:2010-12-21 05:49:56
【问题描述】:
我在article 中阅读了以下内容
不可变对象对于实现某些常见的习惯用法(如撤消/重做和可中止事务)特别方便。以撤消为例。实现撤消的一种常用技术是保留一堆对象,这些对象以某种方式知道如何反向运行每个命令(所谓的“命令模式”)。但是,弄清楚如何反向运行命令可能很棘手。一种更简单的技术是在连续命令之间维护一组表示系统状态的不可变对象。然后,要撤消命令,您只需恢复到以前的系统状态(并且可能将当前状态存储在重做堆栈中)。
但是,这篇文章没有展示如何使用不可变对象来实现“撤消”操作的一个很好的实际示例。例如...从 gmail 收件箱中删除 10 封电子邮件。一旦你这样做,它有一个撤消选项。不可变对象在这方面有何帮助?
【问题讨论】:
标签: language-agnostic undo-redo immutability