zoukankan      html  css  js  c++  java
  • undo/redo功能的原理和思路

    一些具有操作记录的系统,如店铺装修、富文本编辑等,都具有undo/redo功能,可实现界面操作过程的撤销和恢复,简述开发undo/redo功能的原理和思路。

     

    undo是将用户上一步做的操作对程序造成的改动恢复到改动之前,而redo操作是指重新实现这种改动。

    undo/redo操作的实现方式分为两类:记录数据和记录操作。

    记录数据是指将信息编辑窗口打开时,保存原始数据,然后记录用户每次操作后的结果数据,这里的数据是指信息编辑窗口中所有可能发生变动的数据。做undo操作时程序将用户上一步操作前的数据传给信息编辑窗口相应控件。这种做法是以空间来换时间,程序不必考虑用户到底改变了哪些数据,反正每次都是替换的所有可能改变的数据。当每次保存的数据量比较小时,这种做法比较方便快捷,但是如果数据量大,比如包括图形、视频信息等,这种方法就比较耗费内存了。

     

    记录操作是指信息编辑窗口打开后,记录用户每次的操作,包括具体的操作动作以及操作改变的数据,这里的数据是指既能还原操作的数据又能重复操作的数据。做undo操作时程序根据记录的用户操作进行反向处理,对信息编辑窗口进行改动,而做redo操作的时候程序根据记录的用户操作来重复用户的操作。这种做法是以时间换来空间,程序记录的信息变少了,每次只需要记录用户的操作类型以及相关的操作数据(比如用户编辑的哪个控件,编辑前后的控件内容分别是什么),与操作无关的其他数据则不需要记录。这种做法比起记录数据的方式肯定要复杂,但是胜于节俭内存。

     

    参考 http://blog.163.com/gc_2299/blog/static/2242921682013102610251649/

  • 相关阅读:
    免费的Office批量打印工具 Word、Excel、PDF批量打印
    PHP数据库批量去注释、删字段
    SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】
    CentOS 安装 nginx-1.19.4 与原版本共存
    毕业5年之——上个五年计划复盘20210919
    ubunt 20.04 有道词典命令行工具
    java中针对 try,catch和finally一些总结
    Linux find命令与cp命令连用
    MySQL基本操作笔记
    挖矿病毒排查
  • 原文地址:https://www.cnblogs.com/qducn/p/7406706.html
Copyright © 2011-2022 走看看