Java设计模式之命令模式

命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而使用户能够用不同的请求对客户端进行参数化。这种模式可以将请求的发送者和接收者解耦,并且可以将请求保存在队列中、记录日志、撤销操作等。

在命令模式中,有以下几个关键角色:

  1. 命令(Command):定义了执行操作的接口,通常包含一个执行(execute)方法。
  2. 具体命令(Concrete Command):实现了命令接口,具体定义了执行操作的方法。
  3. 接收者(Receiver):执行命令所绑定的操作。
  4. 调用者(Invoker):负责调用命令对象执行请求。
  5. 客户端(Client):创建具体命令对象并设置其接收者。

下面是一个简单的示例,展示了命令模式的应用:

// 命令接口
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();
    }
}

在上述示例中,命令模式的核心是将请求封装成一个命令对象(ConcreteCommand),并将命令对象与接收者对象(Receiver)进行绑定。调用者对象(Invoker)负责调用命令对象的执行方法,从而触发接收者执行相应的操作。

通过使用命令模式,可以实现请求的发送者和接收者之间的解耦,以及对请求进行参数化、记录日志、撤销操作等功能。

你可能感兴趣的:(java,设计模式,命令模式)