命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,并且可以对请求进行排队、记录日志、撤销等处理。这种模式可以将请求的发送者和接收者解耦,从而提高系统的灵活性和可扩展性。
命令模式中通常包含四个角色:文章源自新逸网络-https://www.xinac.net/9362.html
1. Command(命令):定义命令的接口,包含执行命令的方法 `execute()`。文章源自新逸网络-https://www.xinac.net/9362.html
2. ConcreteCommand(具体命令):实现命令接口,定义具体的执行方法。文章源自新逸网络-https://www.xinac.net/9362.html
3. Invoker(调用者):负责调用命令对象执行请求。可以持有多个命令对象,可以将命令对象存储在队列中,从而实现请求的排队和撤销等功能。文章源自新逸网络-https://www.xinac.net/9362.html
4. Receiver(接收者):负责接收命令并执行相应的操作。文章源自新逸网络-https://www.xinac.net/9362.html
下面是一个简单的 Java 实现命令模式的示例:文章源自新逸网络-https://www.xinac.net/9362.html
// 命令接口
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("执行请求");
}
}
// 调用者
class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void executeCommand() {
command.execute();
}
}
// 客户端
public class Client {
public static void main(String[] args) {
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
Invoker invoker = new Invoker();
invoker.setCommand(command);
invoker.executeCommand();
}
}在上面的示例中,命令接口定义了 `execute()` 方法,具体命令实现了该方法,并且持有接收者的引用,接收者负责执行具体的操作。调用者持有命令对象,并且通过调用 `executeCommand()` 方法来调用命令对象的 `execute()` 方法。文章源自新逸网络-https://www.xinac.net/9362.html
命令模式的优点是将请求的发送者和接收者解耦,使得系统更加灵活和可扩展。同时,由于命令对象可以被存储在队列中,可以实现请求的排队、记录日志、撤销等操作。但是需要注意的是,由于每个命令对象都需要实现一个接口,因此会增加系统的复杂度和代码量。文章源自新逸网络-https://www.xinac.net/9362.html 文章源自新逸网络-https://www.xinac.net/9362.html










评论