当前位置: 首页 > news >正文

EEditor中的redo/uodo机制

      本文分析EEditor中的redo/undo机制,并比较与常见的C++中的undo/redo机制的区别。


内容

        和传统的C++中Command设计模式一致,EcommandManager管理命令,同时提供了命令类ECommand。其中EcommandManager中存在两个列表,一个为可撤销命令列表,另一个为可重做命令列表。

        可撤销命令列表:当前执行的所有命令集合。
        可重做命令列表:当执行redo命令,将命令pop_back出可重做命令列表,而push_back可撤销命令列表;当执行undo命令时则相反。

        如下图所示,其中m_stackOldCmd1为命令栈,而m_stackOldCmd2为undo命令栈。

        和传统的C++中Command设计模式不一致的地方在于:其引入了Delegate的概念,提供了虚虚类EController。而传统方式,提供纯虚类ICommand,通过继承ICommand,从而实现扩展。

相关文章:

  • 亚洲市场|人工智能对固态硬盘SSD需求影响
  • 十二、磁盘的调度算法
  • 【SpringBoot详细教程】-08-MybatisPlus详细教程以及SpringBoot整合Mybatis-plus【持续更新】
  • 国内访问OpenAI API
  • vue页面保持在div的底部(适用于聊天界面等需要显示最新信息的场景)
  • C语言_字符函数和字符串函数
  • 关于HashMap中的二次Hash
  • rtsp 协议推流接收(tcp udp)
  • 详解调用钉钉AI助理消息API发送钉钉消息卡片给指定单聊用户
  • Layui表单查询导出
  • IDEA激活失败--脚本分析
  • 实习结帖(flask加上AIGC实现设计符合OpenAPI要求的OpenAPI Schema,让AIGC运行时可以调用api,协助公司门后迁移新后端等)
  • 以太网交换安全:MAC地址表安全
  • 51单片机学习第六课---B站UP主江协科技
  • 读数据湖仓04数据架构与数据工程
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【css3】浏览器内核及其兼容性
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 10个确保微服务与容器安全的最佳实践
  • extract-text-webpack-plugin用法
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • QQ浏览器x5内核的兼容性问题
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微信小程序实战练习(仿五洲到家微信版)
  • 我建了一个叫Hello World的项目
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 一起参Ember.js讨论、问答社区。
  • 说说我为什么看好Spring Cloud Alibaba
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • !$boo在php中什么意思,php前戏
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $.ajax,axios,fetch三种ajax请求的区别
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (3) cmake编译多个cpp文件
  • (Java入门)抽象类,接口,内部类
  • (八)Flink Join 连接
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (四)Controller接口控制器详解(三)
  • (算法)大数的进制转换
  • (一)kafka实战——kafka源码编译启动
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net连接oracle数据库