10.21
命令模式
命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而允许你使用不同的请求、队列或者日志请求来参数化其他对象。命令模式也支持撤销操作。
下面是一个简单的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 executes the command.");
}
}
// 调用者类
class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void executeCommand() {
command.execute();
}
}
// 客户端代码
public class CommandPatternExample {
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
,它实现了 Command
接口,并持有一个接收者对象 Receiver
。
接着,我们定义了接收者类 Receiver
,其中包含一个 action()
方法,用于执行实际的操作。
在调用者类 Invoker
中,我们通过 setCommand()
方法设置要执行的命令,然后通过 executeCommand()
方法执行命令。
在客户端代码中,我们创建了接收者对象 receiver
和具体命令对象 command
,并将命令对象设置到调用者对象 invoker
中。最后,调用 invoker.executeCommand()
执行命令。
命令模式的关键思想是将请求封装成一个对象,使得请求的发送者和接收者解耦,从而可以灵活地处理请求、撤销操作或者记录日志等。这种方式可以方便地添加新的命令,支持请求的排队和延迟执行,并可以实现命令的撤销和重做操作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通