首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式-命令模式3(转)

2012-09-21 
设计模式-命令模式3(转)3.3? 可撤销的操作??????? 可撤销操作的意思就是:放弃该操作,回到未执行该操作前的

设计模式-命令模式3(转)
3.3? 可撤销的操作

??????? 可撤销操作的意思就是:放弃该操作,回到未执行该操作前的状态。这个功能是一个非常重要的功能,几乎所有GUI应用里面都有撤消操作的功能。GUI的菜单是命令模式最典型的应用之一,所以你总是能在菜单上找到撤销这样的菜单项。
??????? 既然这么常用,那该如何实现呢?
??????? 有两种基本的思路来实现可撤销的操作,一种是补偿式,又称反操作式:比如被撤销的操作是加的功能,那撤消的实现就变成减的功能;同理被撤销的操作是打开的功能,那么撤销的实现就变成关闭的功能。
??????? 另外一种方式是存储恢复式,意思就是把操作前的状态记录下来,然后要撤销操作的时候就直接恢复回去就可以了。
??????? 这里先讲第一种方式,就是补偿式或者反操作式,第二种方式放到备忘录模式中去讲解。为了让大家更好的理解可撤销操作的功能,还是用一个例子来说明会比较清楚。
1:范例需求
??????? 考虑一个计算器的功能,最简单的那种,只能实现加减法运算,现在要让这个计算器支持可撤销的操作。
2:补偿式或者反操作式的解决方案
(1)在实现命令接口之前,先来定义真正实现计算的接口,没有它命令什么都做不了,操作运算的接口的示例代码如下:

?

?

(6)运行一下,看看结果,享受一下可以撤销和恢复的操作,结果如下:

次加法运算后的结果为:5  一次减法运算后的结果为:2  撤销一次后的结果为:5  再撤销一次后的结果为:0  恢复操作一次后的结果为:5  再恢复操作一次后的结果为:2  

?

?

也就是初始值为0,执行的两次命令操作为先加上5,然后再减去3。看起来也很容易,对不。

热点排行