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() 执行命令。

命令模式的关键思想是将请求封装成一个对象,使得请求的发送者和接收者解耦,从而可以灵活地处理请求、撤销操作或者记录日志等。这种方式可以方便地添加新的命令,支持请求的排队和延迟执行,并可以实现命令的撤销和重做操作。

posted @ 2024-11-20 10:17  liuxuechao  阅读(3)  评论(0编辑  收藏  举报