命令模式

2025 年 8 月 18 日 | 阅读 2 分钟

命令模式指出 “将一个请求封装在一个对象中,作为命令,并将其传递给调用者对象。调用者对象寻找可以处理此命令的适当对象,并将命令传递给相应的对象,然后该对象执行该命令”。

它也被称为动作或事务。


命令模式的优点

  • 它将调用操作的对象与实际执行操作的对象分离。
  • 它使添加新命令变得容易,因为现有类保持不变。

命令模式的用途

它被用于

  • 当您需要根据要执行的动作来参数化对象时。
  • 当您需要在不同的时间创建和执行请求时。
  • 当您需要支持回滚、日志记录或事务功能时。

命令模式的例子

让我们通过上面的 UML 图来理解适配器设计模式的示例。

命令模式的 UML 图

以下是命令设计模式的参与者:
  • Command(命令) 这是执行操作的接口。
  • ConcreteCommand(具体命令) 此类扩展了 Command 接口并实现了 execute 方法。此类创建了操作和接收者之间的绑定。
  • Client(客户端) 此类创建 ConcreteCommand 类并将其与接收者关联。
  • Invoker(调用者) 此类要求命令执行请求。
  • Receiver(接收者) 此类知道如何执行操作。
command pattern UML

上述 UML 的实现

步骤 1

创建一个 ActionListernerCommand 接口,它将充当 Command。

步骤 2

创建一个 Document 类,它将充当 Receiver。

文件:Document.java

步骤 3

创建一个 ActionOpen 类,它将充当 ConcreteCommand。

文件:ActionOpen.java

步骤 4

创建一个 ActionSave 类,它将充当 ConcreteCommand。

文件:AdapterPatternDemo.java

步骤 5

创建一个 MenuOptions 类,它将充当 Invoker。

文件:ActionSave.java

步骤 6

创建一个 CommanPatternClient 类,它将充当 Client。

文件:AdapterPatternDemo.java

输出