python撤销功能思路,在python中进行撤消

规范策略是使用

Command pattern.您将代表可以作为Command对象执行的操作,并且每个对象都放在堆栈中.然后,应用程序的状态由初始状态加上堆栈具有的所有内容定义.因此,“撤销”操作然后只是弹出顶部堆栈项并将剩余项重新应用到初始状态.

实际上,有时将这些操作应用于初始状态以生成当前状态是昂贵的.例如,对于一系列复杂的图像调整,可能会出现这种情况,就像在Photoshop中找到的那样.在这种情况下,在内存中保持交替状态堆栈序列是很常见的:

+---------+

| state_0 |

+---------+ +---------+

| next -------> | stack_0 |

+---------+ +---------+

| data | +---------+

| next -------> | state_1 |

+---------+ +---------+

| next ----- ...

+---------+

每个stack_i保持命令,直到它超过某些预设复杂度(例如,命令超过计算成本X)或有序(例如,堆栈保持X或更多命令)限制.此时,创建新的中间状态对象state_i 1以封装状态,并且创建新的空堆栈stack_i 1以保存新命令.

这样,您只需将一小段命令应用于上次快照状态即可获得当前状态.这是以记忆整个状态为代价的,这对于非常大的应用程序可能是不可行的,但是您可以选择仅对一组状态进行快照以进行优化.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值