13、命令模式与适配器模式的深入剖析

命令与适配器模式解析

命令模式与适配器模式的深入剖析

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值