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

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,从而实现扩展。


http://www.kler.cn/a/329359.html

相关文章:

  • ArkTS组件结构和状态管理
  • 一个交替优化问题的求解
  • angular的promise实战案例
  • C#编写的日志记录组件 - 开源研究系列文章
  • AWD脚本编写_1
  • mysql 的乐观锁和 mvcc 是一回事吗
  • React 组件命名规范
  • 【Java】六大设计原则和23种设计模式
  • 【RabbitMQ——具体使用场景】
  • leetcode69--x的平方根
  • Python编程和开发过程中让人编程效率和舒适度很高的工具Anaconda
  • 深入理解Spring Boot的自动装配原理
  • 墙绘艺术在线交易:SpringBoot技术解析
  • 从零开始Ubuntu24.04上Docker构建自动化部署(二)Docker-安装docker-compose
  • Linux下的git开篇第一文:git的意义
  • DDOS攻击会对网站服务器造成哪些影响?
  • 【Qt】Qt中的窗口坐标 信号与槽
  • Jenkins: fontconfig head is null, check your fonts or fonts configuration;
  • Hive数仓操作(十一)
  • mac访达查找文件目录
  • harproxy
  • zabbix7.0通过端口监控服务案例详解
  • 如何配置路由器支持UDP
  • post请求失败failed The system cannot find the path specified
  • Redis篇(缓存机制 - 基本介绍)(持续更新迭代)
  • Mac安装Manim并运行