【发布时间】:2011-03-16 01:45:38
【问题描述】:
我正在为手机编写绘画/图形 Java 应用程序(因此内存有限)。应用程序状态本质上是三个 1000x500 位图(即绘画的图层)。加载三个位图大约需要 2 或 3 秒。
我正在尝试编写一个撤消引擎,但我无法找到一个好的方法来做到这一点。典型的做法是:
使用命令模式:撤消时,会重新加载初始文件的状态,然后播放到目前为止处理的所有命令,最后一个命令除外。天真地这样做意味着等待 2 或 3 秒来加载太慢的初始状态。内存中也没有足够的内存来存储初始状态。
使用备忘录模式:撤消时,会将当前状态中已更改的部分替换为旧状态。这意味着每个操作都需要将旧状态的位图保存到磁盘,因为移动设备上没有足够的内存来将其存储在内存中。由于保存位图需要时间,如果用户决定例如,我该如何应对?快速连续绘制许多笔触?我不能让他们等。
我所有的解决方案都涉及上述模式的复杂混合。
任何人都可以提出一个解决方案,让我可以对我的应用程序进行相当快速的撤消/重做吗?
【问题讨论】:
-
没有更多建议?我会认为我的问题对于在实际项目中实现这些模式中的任何一个都是非常基础的。
标签: java android design-patterns oop optimization