命令是一种行为设计模式, 它可将请求或简单操作转换为一个对象。
此类转换让你能够延迟进行或远程执行请求, 还可将其放入队列中。
复杂度:
流行度:
使用示例: 命令模式在 Java 代码中很常见。 大部分情况下, 它被用于代替包含行为的参数化 UI 元素的回调函数, 此外还被用于对任务进行排序和记录操作历史记录等。
以下是在核心 Java 程序库中的一些示例:
识别方法: 命令模式可以通过抽象或接口类型 (发送者) 中的行为方法来识别, 该类型调用另一个不同的抽象或接口类型 (接收者) 实现中的方法, 该实现则是在创建时由命令模式的实现封装。 命令类通常仅限于一些特殊行为。
文字编辑器和撤销
本例中的文字编辑器在每次用户与其互动时, 都会创建一个新的命令对象。 命令执行其行为后会被压入历史堆栈。
现在, 当程序执行撤销操作时, 它就需要从历史记录中取出最近执行的命令, 然后执行反向操作或者恢复由该命令保存的编辑器历史状态。
commands
commands/Command.java: 抽象基础命令
commands/CopyCommand.java: 将所选文字复制到剪贴板
commands/PasteCommand.java: 从剪贴板粘贴文字
commands/CutCommand.java: 将文字剪切到剪贴板
commands/CommandHistory.java: 命令历史
editor
editor/Editor.java: 文字编辑器的 GUI
Demo.java: 客户端代码
OutputDemo.png: 执行结果