我正在为手机编写一款绘画/图形Java应用程序(因此内存有限)。该应用程序状态基本上是三个1000x500位图(即绘画的层)。加载三个位图需要大约2或3秒钟。
我试图编写一个撤销引擎,但我无法找到一个好的方法来实现。典型的方法如下:
使用命令模式:当您执行撤销操作时,重新加载初始文件的状态,然后回放到目前为止已处理的所有命令,但不包括最终命令。然而,这样做很天真,意味着等待2或3秒钟来加载初始状态,这太慢了。在移动设备上也没有足够的内存来存储初始状态。
使用备忘录模式:当您执行撤销操作时,将更改的当前状态部分替换为旧状态。这意味着每个操作都需要将旧状态的位图保存到磁盘上,因为在移动设备上没有足够的内存来存储它。由于保存位图需要时间,如果用户决定快速连续绘制多个笔划,如何应对?我不能让他们等待。
我的所有解决方案都涉及以上模式的复杂混合。
有人能否提出一个解决方案,使我可以为我的应用程序实现相对较快的撤销/重做?
我试图编写一个撤销引擎,但我无法找到一个好的方法来实现。典型的方法如下:
使用命令模式:当您执行撤销操作时,重新加载初始文件的状态,然后回放到目前为止已处理的所有命令,但不包括最终命令。然而,这样做很天真,意味着等待2或3秒钟来加载初始状态,这太慢了。在移动设备上也没有足够的内存来存储初始状态。
使用备忘录模式:当您执行撤销操作时,将更改的当前状态部分替换为旧状态。这意味着每个操作都需要将旧状态的位图保存到磁盘上,因为在移动设备上没有足够的内存来存储它。由于保存位图需要时间,如果用户决定快速连续绘制多个笔划,如何应对?我不能让他们等待。
我的所有解决方案都涉及以上模式的复杂混合。
有人能否提出一个解决方案,使我可以为我的应用程序实现相对较快的撤销/重做?