实现命令模式

2023-11-26

我正在设计一个应用程序,我想使用命令模式用于撤消/重做目的。我对命令模式做了一些研究,但我唯一不明白的是:命令是否应该具有撤消和重做方法,或者我应该创建两个单独的命令,一个用于撤消,一个用于重做,并从主命令本身?


命令对象本身应该实现撤消/重做功能。

命令通常从命令管理器维护的堆栈中压入和弹出,以实现多级撤消。当命令被执行时,它们被压入堆栈;当它们被撤消时,它们被从堆栈中弹出。

备忘录模式将与命令模式结合使用,它不能替代命令模式的使用。它将用于维护撤消操作所需的状态。

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

实现命令模式 的相关文章

  • JavaFX 过渡动画等待

    这么快 我正在做一个演示计算机图形绘制方法的程序 我需要创建时间线或操作历史记录 例如 placeVertex x y moveVertex newX newY 等 并迭代 向前和向后 自动或手动 我已经通过使用命令设计模式实现了这一点 但
  • makefile patternrule 在目标文件名中带有更多通配符

    我需要创建一个特殊的 makefile 规则 最好通过一个示例来解释 也许我们用规则创建文件 test pdf tex pdflatex jobname test tex result pdf tex pdflatex jobname re
  • 使用 Symfony 的 EventDispatcher 组件的正确方法是什么?

    我想通过使某些类可观察来促进 PHP 代码中的松散耦合 交响乐的事件分发器组件 https github com symfony EventDispatcher看起来很有希望 SPL 也是如此Spl观察者 http php net splo
  • 单个 DLL V 多个 DLL

    前段时间我在这里问了一个问题 当时我想知道是否最好将一个大项目 NET 类库 拆分为多个 NET DLL 建议使用一个大的 DLL 该 DLL 现在已在另一个项目中使用 另一个项目只使用了几个类 因此项目中有很多类未使用 从体系结构的角度来
  • java对象间通信

    还在学习Java Swing 又让我问了这个问题 但这确实是一个普遍的面向对象问题 如果我有一个主类 包含 main 它会创建一个执行某些操作的新对象 A 主类现在具有对该对象的引用 对象 B 如何访问该对象的属性 我能想到的唯一方法是让主
  • 我们是否需要更喜欢构造函数而不是静态工厂方法?如果是的话,什么时候?

    我一直在阅读有效的Java by 约书亚 布洛赫到目前为止 它确实名副其实 第一项就提供了令人信服的理由静态工厂方法 over 构造函数 以至于我开始质疑那些好的旧构造函数的有效性 本书的优点 缺点总结如下 优点 他们有名字 我们拥有全面的
  • OSGi 应用程序设计 - 我是否滥用服务框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我们正在开发的应用程序中 我有一个供数据提供程序组件实现的通用接口 并且我将这些提供程序作为服务连接起来 我的一位同事建议 最好只创建一项可以
  • 门面模式和业务委托模式之间的区别

    外观设计模式和业务委托设计模式有什么区别 它们不是都用于向客户端隐藏业务逻辑吗 委托位于客户端和实际实现之间 通常对客户端隐藏 过滤 增强实现的某些功能 Facade 提供了一个粗粒度的 API 隐藏了更复杂的逻辑和 或协调 通常捆绑多个协
  • 在应用程序中搜索对象的设计模式

    需要一些有关设计模式的帮助 我正在创建一个应用程序 该应用程序在存储在单独表中的数据库中的对象上具有不同类型 例如 我有 5 种对象 A B C D E 我在数据库中有 5 个不同的表来存储每个对象 现在 我想在我的应用程序中实现搜索功能
  • C++11 的 &&(R 值引用)运算符是否废弃了“代理对象”设计模式?

    Scott Meyers 的第 30 项 更有效的 C http www amazon co uk More Effective Programs Professional Computing dp 020163371X绘制出 代理对象 编
  • 如何使用工厂来创建使用策略模式的对象?

    假设我们的在线商店有一个简单的支付功能 我们希望使用不同的交易处理器来管理不同的交易 交易可以是付款或退款 交易处理器可以是 Paypal 或 Payplug 所以我们有以下课程 class PaymentTransaction imple
  • 正式协议对象有什么用

    我们可以在源代码中创建协议对象 但是正式的协议对象有什么用呢 Protocol myObj protocol protocolName 您可以使用它来检查对象是否符合协议 anotherObject conformsToProtocol m
  • 是否有用于序列化和反序列化各种格式的对象层次结构的模式?

    给定一个复杂的对象层次结构 幸运的是它不包含循环引用 如何实现支持各种格式的序列化 我不是来讨论实际实施的 相反 我正在寻找可能派上用场的设计模式的提示 更准确地说 我正在使用 Ruby 我想解析 XML 和 JSON 数据以构建复杂的对象
  • 为什么我收到错误“错误 C2259:...无法实例化抽象类”?

    任何帮助都是appriced 我正在研究 C 工厂模式 但收到此错误 1 gt c users brian documents visual studio 2010 projects cst276lab 3 guitar hpp 456 错
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines
  • 三层 Asp.Net 应用程序中的异常处理

    1 据我了解 在three tierAsp Net应用程序我们应该通过以下方式实现异常处理 a 我们应该把try catch围绕代码块 位于三层中的任何一层 我们希望页面能够从该代码块正常恢复 当此代码生成异常时 b 我们不应该放try c
  • JavaScript 中的单例模式

    下面是 JavaScript Singleton 模式的一个非常流行的实现示例 var mySingleton function var instance function init function privateMethod conso
  • NHibernate 中具有不同类型答案的问题

    我正在尝试找到一个问卷问题的简洁解决方案 假设我有一个Questionnaire类有一个集合Answers e g public class Questionnaire public virtual ISet
  • 使用 LINQ to SQL 的 .NET 架构的最佳设计实践(DAL 必要吗?我们真的可以使用 POCO吗?要采用的设计模式吗?)

    我避免在 net arch n 层架构上编写看起来像是另一个线程的内容 但请耐心等待 希望我和其他人一样 在选择用于企业应用程序的架构时 考虑到当今的趋势和新兴技术 仍然没有 100 满意或不清楚应采取的最佳方法 我想我正在寻求大众社区对方
  • iostream 对象 cin、cout、cerr 和 clog 是如何实现的?

    iostream 对象 cin cout cerr 和 clog 是在 iostream 标头中声明的对象 我知道在某些编译器中可能会在构造这些 iostream 对象之前尝试使用它们 因此在某些情况下它们必须受到 静态初始化顺序失败 的影

随机推荐

  • 如果在引用类之前未调用静态初始化程序,如何注册 java 类

    我有一个由执行文件处理 例如搜索或其他 的类实现的接口 public interface FileProcessorInterface public void processFile String fileName 然后我对每种文件类型有不
  • 将 Crosswalk 插件添加到 Cordova Android 项目后生成错误

    我正在使用最新的科尔多瓦安卓 5 1 0 该项目在没有人行横道的情况下构建和运行良好 但是在我使用添加人行横道插件后 cordova plugin add https github com crosswalk project cordova
  • Hibernate - spring 注释的实体未从 jar 内扫描

    我有一个包含带注释的实体类的包 我将其导入到我的 Web 项目中 当 tomcat 部署项目时 不会扫描 jar 中的实体类是否有注释 有没有办法告诉 spring 在 jar 文件中搜索带注释的类 IE
  • CodeIgniter - 如何捕获数据库错误?

    有没有办法制作CI扔一个例外当它遇到一个DB error而不是显示如下消息 发生数据库错误错误号 1054 where 子句 中的未知列 foo SELECT FROM FooBar WHERE foo 1 注意 我只希望这种情况发生在一个
  • 生成多个范围之间的随机数

    我了解如何生成两个数字之间的随机数 1 int Math random 10 1 1 or min int Math random max min 1 但是我如何生成一个属于多个范围的随机数呢 例如 数字可以在 1 到 10 之间或 50
  • 需要 JavaCV FFmpegFrameRecorder 属性解释

    我在用着FFmpegFrameRecorder从我的网络摄像头获取视频输入并将其记录到视频文件中 问题是我正在使用我发现的一些不同的演示源代码构建我的应用程序 并且我使用其中一些属性对我来说并不完全清楚 首先 这是我的代码片段 FFmpeg
  • 使用 dyn.load 在 R x64 中加载已编译的 C 代码时出现问题

    我最近从32位笔记本换成了64位台式机 都是win7 我刚刚发现使用加载 dll 时出现错误dyn load 我想这是一个简单的错误 我忽略了一些事情 例如 我编写了这个简单的 c 函数 foo c void foo int x x x 1
  • pandas 按两列分组并按平均值汇总

    我有一个像这样的数据框 df pd DataFrame df id 1 1 1 2 2 3 3 3 3 4 4 5 df view A B A A B A B A A B A B df value np random random 12 i
  • WebMethod 返回 JSON 格式的值

    如何将Webmethod的值以JSON格式返回给客户端 我想返回两个静态 int 值 我是否需要使用这两个属性创建新对象并返回它 GetStatus 方法被频繁调用 我不喜欢每次只是为了 json 格式创建一个特殊对象的想法 WebMeth
  • 为什么绝对定位元素显示在静态元素之上?

    我知道绝对定位会破坏正常流程 但由于 HTML 中的顺序是先是绝对元素 然后是静态元素 所以我希望它也能反映在显示顺序中 absolute position absolute width 100px height 100px backgro
  • 为什么Apple推荐使用dispatch_once来实现ARC下的单例模式?

    在ARC下单例的共享实例访问器中使用dispatch once的确切原因是什么 MyClass sharedInstance Static local predicate must be initialized to 0 static My
  • 在 AVAudioEngine 中从网络传输数据,可能吗?

    我有一个使用的应用程序AVAudioEngine用于从本地文件系统播放文件AVAudioPlayerNodes and AVAudioFiles 这工作得很好 现在我想让我的设置也支持从互联网上的服务器流式传输 MP3 文件 到目前为止我尝
  • 为什么安装VS 2017后命令行csc无法编译C#7?

    我刚刚下载了 Visual Studio 2017 RC 这是几天前发布并支持 C 7 我可以使用 IDE 中的 C 7 功能 然而 这种行为似乎不适用于命令行 我正在从事一个项目 需要csc用于处理 C 7 及更高版本的可执行文件 但是
  • 当我在 Windows 上克隆带有符号链接的存储库时会发生什么?

    关于在 Windows 上添加符号链接的支持存在很多问题 但是 当我克隆时实际发生了什么带有符号链接的存储库在 Windows 上 Since 版本1 5 3本机 Git 客户端git clone and git init将探测目标文件系统
  • 当程序崩溃且没有异常时如何调试程序?

    我的一个程序定期崩溃 但我不知道为什么 我在调试模式下运行它 但没有弹出任何内容 程序突然退出了 我遇到过其他确实引发异常的错误 但不是这个 有什么神奇的方法可以抓住它吗 假设您是从 Visual Studio 中运行它 并且由于某种原因
  • ADB 无法识别 Samsung Gear Live 或 LG G 手表

    我正在尝试执行adb在 Windows 7 上的 Samsung Gear Live 手表上 我似乎没有找到设备驱动程序来让它被 ADB 识别 这是我已经拥有的 我已经在 Gear Live 中启用了 ADB 调试 我转到设备管理器并将 g
  • 如何使用 log4net 记录 Threadpool 线程的正确上下文?

    我正在尝试找到一种方法来从一堆线程中记录有用的上下文 问题是 许多代码是在通过线程池线程到达的事件上处理的 据我所知 因此它们的名称与任何上下文都没有关系 该问题可以通过以下代码来演示 class Program private stati
  • Haxe - 打印命令行参数

    使用 Haxe 编程语言 是否可以打印传递给应用程序的命令行参数 我正在尝试在 Haxe 中重写这个 Java 程序 它只是打印命令行参数 public class JavaExample public static void main S
  • 在没有身份的情况下使用 Bearer/Jwt 授权

    我正在使用 Asp 5 开发 Web API 并阅读了一些有关 Web API 的文档 意识到我需要 Bearer 授权 经过查找 没有发现任何未经授权使用的文档或样本Aspnet Identity 我有自己的会员资格 但我不想使用Iden
  • 实现命令模式

    我正在设计一个应用程序 我想使用命令模式用于撤消 重做目的 我对命令模式做了一些研究 但我唯一不明白的是 命令是否应该具有撤消和重做方法 或者我应该创建两个单独的命令 一个用于撤消 一个用于重做 并从主命令本身 命令对象本身应该实现撤消 重