命令模式:命令也是类

命令模式是一种行为型设计模式,它允许将请求封装成对象,从而使您能够将不同的请求发送到队列或日志中,以及支持可撤销的操作。

示例代码

//定义命令接口
public interface Command {
void execute();
}
//具体命令
public class ConcreteCommand implements Command {
private Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
receiver.action();
}
}
//接收者
public class Receiver {
public void action() {
System.out.println("接收者执行命令...");
}
}
//调用者
public 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();
}
}

在这个例子中,Command 接口定义了一个 execute() 方法,而 ConcreteCommand 类实现了该接口,并且持有一个对 Receiver 类的引用。Receiver 类定义了一个 action() 方法,用于执行实际的操作。Invoker 类也持有一个对 Command 接口的引用,并且通过调用该接口的 execute() 方法来执行对应的命令。

在客户端代码中,我们首先创建一个 Receiver 对象,然后将其传递给一个具体命令对象 ConcreteCommand 的构造函数中,以便让该命令对象知道它要执行哪个接收者对象的方法。接着,我们创建一个 Invoker 对象,并将具体命令对象设置为该调用者对象的命令。最后,我们执行命令,即调用 Invoker 对象的 executeCommand() 方法。

总之,命令模式使得您能够将请求封装成对象,从而可以通过参数化和传递不同的请求队列来参数化其他对象。这样做还支持可撤销的操作,因为您可以保存要执行的所有命令,以便稍后进行撤销或重做。

posted @   穆海如枫  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示