如何在程序不做大改动的情况下实现undo/redo操作

2023-11-27

你好 我即将向我当前正在编写的应用程序添加新功能。我需要编写撤消/重做功能。然而,我们的应用程序 90% 已经准备就绪,我不知道在不影响已创建的(太多)代码的情况下实现此功能的最佳方法是什么。


这里没有太多细节。然而,撤消/重做功能通常是通过某些变体来处理的命令模式。根据您的架构,这可能是将您的基本功能简单地重新加工为“命令”,或者进行重大修改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在程序不做大改动的情况下实现undo/redo操作 的相关文章

  • 安全浮点除法

    我的代码中有一些地方我想确保 2 个任意浮点数 32 位单精度 的除法不会溢出 目标 编译器不保证 足够明确 对 INF INF 的良好处理 并且 不完全保证 IEEE 754 的异常值 可能未定义 并且目标可能会改变 另外 我无法对这几个
  • 终止进程树(C for Windows)

    以前曾有人问过这个问题 但我在代码中找不到明确的答案 我打开一个进程 ProcessA PID 为 1234 此进程打开一个子进程 ProcessAB PID 5678 完成后 我终止了 ProcessA 但 ProcessAB 仍然存在
  • 对 CodePlex 的表达式树序列化库的看法?

    有人尝试过这个代码库并对它有意见吗 http code msdn microsoft com exprserialization http code msdn microsoft com exprserialization 10x 看起来该
  • 当父类也实现 IDisposable 时,在子类上实现 IDisposable

    我有一个父类和子类都需要实现IDisposable 应该在哪里virtual and base Dispose 通话发挥作用 当我刚刚覆盖Dispose bool disposing 打电话 说我实现了感觉真的很奇怪IDisposable没
  • 将阻塞调用包装为异步,以实现更好的线程重用和响应式 UI

    我有一个类负责通过调用遗留类来检索产品可用性 该遗留类本身通过进行 BLOCKING 网络调用在内部收集产品数据 请注意 我无法修改旧版 API 的代码 由于所有产品都是相互独立的 因此我希望并行收集信息 而不会创建任何不必要的线程 也不会
  • 调试神秘的git+ssh+proxy失败“bash:没有这样的文件或目录”的艰难方法

    我正在尝试通过 SOCKS5 代理克隆 github 存储库 在 ssh config I have Host github com github com ProxyCommand usr bin nc X 5 x 127 0 0 1 70
  • 如何显示图片目录中的图像?

    我想显示图片库中的图片 我获取图片并绑定数据 StorageFolder picturesFolder KnownFolders PicturesLibrary IReadOnlyList
  • (简单)boost thread_group 问题

    我正在尝试编写一个相当简单的线程应用程序 但我对 boost 的线程库很陌生 我正在开发的一个简单的测试程序是 include
  • 如何将 Boost 库添加到 XCode 6.0 中的 C++ 程序?

    我在用着XCode6 0并且需 要boost程序库 我已经下载了boost 1 57 0 tar gz from http sourceforge net projects boost files boost 1 57 0 http sou
  • 在 C# 中读取并发送 mp4 文件

    我使用以下代码从服务器读取 mp4 文件并通过 http 发送它 我的服务器端是 mvc4 控制器 有趣的是 视频在 Chrome 中渲染得很好 但在 ios 设备上没有得到任何东西 所以我认为这可能是响应流标头问题 我缺少什么吗 var
  • 如何强制操作系统收回内存? (C++)

    在我的 C 代码中 我分配了大量内存来创建树 然后在每个节点中使用 删除 来释放内存 删除所有内容后 我检查操作系统使用的内存量 发现内存未释放 这是预期的 因为该进程不会立即将内存返回给操作系统 因为它仍然可能会再次使用它 问题是 我在删
  • .NET 可移植类库 [可序列化] 属性

    我有一个公共类库 其中包含适用于我的服务器和客户端的许多模型 由于客户端在 Xamarin 下运行 因此公共库必须是可移植类库 PCL 在我的服务器中 这些对象通过 AppDomain Remoting Marshaling 传递 因此据我
  • Arduino C++ 析构函数?

    我知道在Arduino中你不能使用delete 那么什么时候调用 C 类中定义的析构函数呢 同样 如果我想创建一个指向数组的指针 我必须使用malloc and free 当对象被销毁时 析构函数被调用 对于自动 堆栈上 变量 它在离开其作
  • 如何使 YY_INPUT 指向字符串而不是 Lex & Yacc (Solaris) 中的标准输入

    我想要我的yylex 解析字符串而不是文件或标准输入 如何使用 Solaris 提供的 Lex 和 Yacc 来做到这一点 重新定义YY INPUT 这是一个工作示例 使用命令编译并运行 yacc d parser y lex lexer
  • 连接到 Wikipedia API 的 WebRequest

    这可能是一个可悲的简单问题 但我似乎无法格式化帖子网络请求 响应以从维基百科API http en wikipedia org wiki Wikipedia API 如果有人可以帮助我查看我的问题 我已在下面发布了我的代码 string p
  • 检查字符串是否多次包含子字符串[重复]

    这个问题在这里已经有答案了 要搜索字符串内的子字符串 我可以使用contains 功能 但是如何检查一个字符串是否多次包含子字符串呢 优化这一点 对我来说 知道有多个结果而不是有多少就足够了 尝试利用快速IndexOf and LastIn
  • ARM + gcc:不要使用一大块 .rodata 部分

    我想使用 gcc 编译一个程序 并针对 ARM 处理器进行链接时间优化 当我在没有 LTO 的情况下编译时 系统会被编译 当我启用 LTO 时 使用 flto 我收到以下汇编错误 错误 无效的文字常量 池需要更近 环顾网络 我发现这与我系统
  • 为数据提供有效类型是否会产生副作用?

    假设我有一大块动态分配的数据 void allocate size t n void foo malloc n return foo 我希望使用指向的数据foo作为一种特殊类型 type t 但我想稍后再这样做 而不是在分配期间这样做 为了
  • 尝试返回 IQueryable 时发生转换错误

    我有一个查询应该返回IQueryable
  • 如何在类库中添加配置文件,后跟 .NET Core 1.1 的连接字符串

    我正在开发 n 层应用程序 其中有数据访问层 它独立于任何其他应用程序 我已经为 NET Core 1 1 创建了类库 我可以看到依赖项文件夹 但看不到任何配置 JSON 文件 我想知道 我可以在类库项目中添加 AppSetting JSO

随机推荐

  • 常见的 Haskell 运算符有可发音的名称吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我正在阅读为大善而学 Haskell 而且我从来不知道 Haskell 运算符
  • ElementClickInterceptedException:消息:元素单击被拦截:元素

    我试图单击 所有主题 和 所有状态 复选框 然后搜索结果 当我运行脚本时 会打开一个大小为 1036x674 的 Chrome 窗口 如果我不理会窗口 则会出现元素单击拦截错误 如果我最小化或最大化窗口 我的脚本就可以正常工作 我正在使用
  • 如何在 python 中的活动连接上启动 TLS?

    以下是我当前在端口 587 上连接到 gmail 的 smtp 服务器的代码 发出 STARTTLS 命令后 我如何完成 TLS 会话协商并开始发出 AUTH LOGIN 和 MAIL FROM 等命令 我省略了 Base64 编码的 gm
  • TestCoroutineDispatcher 和 TestCoroutineScope 均不处理协程测试异常

    使用这个manual测试协程 编写预期抛出异常的测试会导致崩溃 而不是通过测试 我想知道我做错了什么 private val testDispatcher TestCoroutineDispatcher Before fun setup p
  • Python 中的区域交集

    我有一个代码 它采用条件 C 作为输入 并将问题的解决方案计算为 x y 空间上的 允许区域 A 该区域由多个 管 组成 这些 管 由两条永远不会交叉的线定义 我要寻找的最终结果必须满足 k 个条件 C1 Ck 因此是 k 个区域 A1 A
  • 嵌入式环境中的STL

    我是一名 C 程序员 多年来一直听到这样的说法 STL 是not good用于嵌入式环境 因此通常禁止在基于嵌入式环境的项目中使用 我相信像 Boost 这样的 STL 库要强大 得多 并且提供更快 更少出错的开发方式 当然 语法有点吓人
  • iPhone + Twitter API:转换时间?

    有没有一种简单的方法可以将从 twitter 获得的时间戳转换为 UNIX 时间或从现在起的分钟数 我可以解析字符串并自己转换所有内容 但我希望有一种不需要这样做的转换方法 以下是带有时间戳的created at 元素的示例 2007 年
  • android c2dm注册ID

    我阅读了 Android Cloud to Device Messaging Framework 中的解释 当我们的应用程序成功注册到 C2DM 服务器后 我们会收到一个注册 ID 注册 ID 一直有效 直到应用程序明确取消注册 或者直到
  • 软键盘不存在,无法隐藏键盘 - Appium android

    我收到以下异常 org openqa selenium WebDriverException An unknown server side error occurred while processing the command Origin
  • Postgres UTF-8 字符排序

    我正在构建一个小型应用程序 其中包含数据库中的世界语单词 因此我有 apelojn 和 brakhorlo o 等带有 特殊 字符的单词 使用 PostgreSQL 9 4 4 我有一个words具有以下架构的表 lingvoj dev d
  • 无法通过 Lambda 中的 VPC 端点访问 S3

    我的 VPC 中有一个 Lambda 函数 我想访问 S3 存储桶 我认为我已经正确设置了 S3 VPC 端点 因为我在与 Lambda 函数相同的子网和安全组中创建了一个 EC2 实例 当我运行 Lambda 函数代码的副本时在EC2实例
  • Dapper 不会与具有自定义 getter/setter 的成员一起使用吗?

    根据我正在使用的一些代码 情况似乎如此 我在其中找不到任何内容简洁的文档明确表示它不适用于具有自定义获取 设置逻辑的成员 但我确实看到了这个示例 public class Dog public int Age get set public
  • 为nodejs创建验证码

    我正在尝试在网站的注册页面上放置验证码 如何在 Node js 中显示验证码 我找到了一个用纯js编写的聪明的 验证码 Features 只生成数字验证码PNG图像 内置字体 字符上下 左右限位 随机位移 完整的 JavaScript 它会
  • 无法识别的选择器发送到实例 NSTimer Swift

    我正在尝试开发一个包含简单秒表功能的应用程序 我正在使用 Xcode 6 和 Swift 语言 这是 FirstViewController 中的代码 IBAction func Stopwatch Sender UIButton var
  • C# 使用元组对 List<> 进行排序?

    我需要按发布日期对 MediaItem 对象的 List 进行排序 发布日期不是该项目的属性 所以我最初的意图是暂时附加一个发布日期属性 加载它们 排序 然后放弃该属性 我工作中的某人建议我使用 Tuple 并使用 LINQ 进行排序 我已
  • css自定义光标不起作用

    我正在使用 css 自定义光标来使用图像作为光标 图片不行啊这段代码有什么问题 Here是使用的图像 Fiddle cursor url http www sarkelliancreed comule com pics TREES jpg
  • 如何将变量从布局文件传递到 grails 模板中?

    因此 我有一个导航模板 common navigation gsp 它在 Grails 项目主布局文件 layouts main gsp 中呈现 如何将某种变量 参数 参数从各个视图文件传递到布局并最终传递到导航模板 我只是希望当我在页面上
  • 选择最后插入 ID()

    有人可以解释一下 MySQL 函数 LAST INSERT ID 是如何工作的吗 我试图获取数据库中最后插入的行的 id 但每次都获取 1 我用的是mybatis 示例查询是
  • span内嵌套div问题

    div 是一个块元素 而 span 是一个内联元素 因此根据 xhtml 1 0 验证 这是不正确的 但仍然有几个网站使用这种方法进行样式设置 可以吗 或者它会引起一些问题请帮助我 这是不对的 你永远不需要这样做 gt 因此永远不应该
  • 如何在程序不做大改动的情况下实现undo/redo操作

    你好 我即将向我当前正在编写的应用程序添加新功能 我需要编写撤消 重做功能 然而 我们的应用程序 90 已经准备就绪 我不知道在不影响已创建的 太多 代码的情况下实现此功能的最佳方法是什么 这里没有太多细节 然而 撤消 重做功能通常是通过某