不可变对象对于实现某些常见的习惯用法特别方便,例如撤消/重做和可中止事务。以撤消为例。实现撤消的一种常用技术是保留一堆对象,这些对象以某种方式知道如何反向运行每个命令(所谓的“命令模式”)。但是,弄清楚如何反向运行命令可能很棘手。一种更简单的技术是在连续命令之间维护表示系统状态的一组不可变对象。然后,要撤消命令,您只需恢复到以前的系统状态(并可能将当前状态存储在重做堆栈中)。
但是,该文章没有展示如何使用不可变对象来实现“撤消”操作的一个很好的实际示例。例如...从 gmail 收件箱中删除 10 封电子邮件。一旦你这样做,它就有一个撤消选项。不可变对象在这方面有何帮助?