命令模式与适配器模式的深入剖析
1. 命令模式中的撤销与重做功能
在许多场景中,让用户或程序能够撤销已执行的操作是一个常见需求。如今,撤销功能对于任何优秀的编辑器或文字处理器来说都是必不可少的,在数据库中也有类似的回滚事务操作。
实现撤销操作的简单方法是记住操作前的状态,在需要撤销时恢复该状态。但对于大型文本文件、文档或数据库,每次操作都进行完整复制会消耗大量资源。
命令模式可以解决这个问题。每个可撤销的命令都有两个方法: execute 方法用于执行操作, unexecute 方法用于撤销操作。当用户进行更改时,会创建一系列命令并立即执行,同时将这些命令按顺序存储在列表中。如果用户想要撤销操作,只需找到列表中的最后一个命令并执行 unexecute 方法,还可以继续撤销之前的命令。
重做功能也可以通过重新执行已撤销的命令来实现。以下是一些具体的代码示例:
class CreateFile < Command
def initialize(path, contents)
super "Create file: #{path}"
@path = path
@contents = contents
end
def execute
f = File.open(@path, "w")
f.write(@contents)
f.close
end
def unexecute
File.delete(@path)
end
命令与适配器模式解析
超级会员免费看
订阅专栏 解锁全文
2493

被折叠的 条评论
为什么被折叠?



