命令模式是一种行为设计模式,它将请求封装成一个对象,从而允许您根据不同的请求将客户端参数化,并将请求排队或记录日志,以及支持可撤销的操作。
在Java中实现命令模式通常需要以下几个关键组件:
1. 命令接口(Command Interface):它是一个接口,定义了执行命令的方法。
2. 具体命令类(Concrete Command):它是命令接口的具体实现,封装了执行特定操作的代码。
3. 接收者类(Receiver):它是执行实际操作的类。具体命令类将调用接收者类的方法来执行命令。
4. 调用者类(Invoker):它是负责调用命令对象的类。它将命令对象存储在一个列表中,并在需要时调用命令对象的执行方法。
下面是一个简单的Java代码示例,演示了如何实现命令模式:
- // 命令接口
- interface Command {
- void execute();
- }
-
- // 具体命令类
- class ConcreteCommand implements Command {
- private Receiver receiver;
-
- public ConcreteCommand(Receiver receiver) {
- this.receiver = receiver;
- }
-
- public void execute() {
- receiver.action();
- }
- }
-
- // 接收者类
- class Receiver {
- public void action() {
- System.out.println("Receiver: Performing action");
- }
- }
-
- // 调用者类
- class Invoker {
- private Command command;
-
- public void setCommand(Command command) {
- this.command = command;
- }
-
- public void executeCommand() {
- command.execute();
- }
- }
-
- // Usage
- public class Main {
- public static void main(String[] args) {
- Receiver receiver = new Receiver();
- Command command = new ConcreteCommand(receiver);
- Invoker invoker = new Invoker();
-
- invoker.setCommand(command);
- invoker.executeCommand();
- }
- }
在这个示例中,我们定义了一个简单的命令模式,其中Receiver类表示接收者,ConcreteCommand类表示具体命令,Invoker类表示调用者。在Main类中,我们创建了一个接收者对象、一个具体命令对象和一个调用者对象,并演示了如何执行命令。