是否有一种方法可以撤消刚刚完成的最后一个功能/方法?
例如,我有一个函数/方法正在执行此操作:
isTrue = false
num+=5
以及更多功能。当用户按下屏幕上的某些按钮时,每个功能便开始工作。用户应有可能撤消其上一次操作。 有通用的方法来撤消刚刚完成工作的任何功能吗?
我当然可以这样:
isTrue=true
num-=5
但是如果有很多功能怎么办?是否有简单的方法来撤消任何功能(Android)?
答案 0 :(得分:3)
我不知道您可以执行类似操作的任何语言或平台。
应用程序执行的任何代码都会以某种方式修改内存中的数据(创建或销毁对象,更改值等)。为了撤消该代码操作系统所做的更改,操作系统应保存完整的数据修改历史记录,由于资源有限,这实际上是不可能的。
答案 1 :(得分:1)
没有任何内置语言功能可以撤消功能已更改的所有内容,但是在其他情况下也建立了一些模式,可以在这种情况下提供帮助。
您可以使用的一个选项是memento pattern,在其中保留先前状态的副本,以便始终可以恢复到原来的状态,但是这样做的一个缺点是增加了用于保存所有多余状态的内存使用量,或者处于磁盘上的持久状态,则存在读取/写入的性能开销。
另一种选择是使用command pattern,其中每个命令都知道如何撤消自身,这样您就无需保持先前的状态,而是需要跟踪命令的历史记录,这意味着如果您有很多状态,那么命令模式将是更好的选择,因为您不需要保存以前的状态,但是您将拥有一个反函数,该函数知道撤消该命令所做的更改,而如果您只有很少的字符串,则使用memento模式将是更好的选择,尤其是即使您在应用程序被杀死并再次启动后仍需要允许撤消操作的情况下。
可以使用here找到有关使用命令模式进行撤消并进行解释的好例子。