MST

星途 面试题库

面试题:Java命令模式中Receiver角色的作用及示例

请阐述在Java命令模式里Receiver角色的具体作用,并通过一段简单的Java代码示例展示如何定义和使用Receiver。
34.8万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

Receiver角色的作用

在Java命令模式中,Receiver角色负责执行实际的操作。命令对象(Command)通常持有Receiver的引用,当命令的执行方法被调用时,命令会将请求转发给Receiver,由Receiver完成具体的业务逻辑。这样做的好处是将命令的发起者(Invoker)与命令的执行者(Receiver)解耦,提高了系统的灵活性和可维护性。

代码示例

  1. 定义Receiver类
// Receiver类,负责具体的操作
class Receiver {
    public void action() {
        System.out.println("Receiver执行具体的操作");
    }
}
  1. 定义Command接口及具体命令类
// Command接口
interface Command {
    void execute();
}

// 具体的命令类,持有Receiver的引用
class ConcreteCommand implements Command {
    private Receiver receiver;

    public ConcreteCommand(Receiver receiver) {
        this.receiver = receiver;
    }

    @Override
    public void execute() {
        receiver.action();
    }
}
  1. 定义Invoker类
// Invoker类,负责调用命令的执行方法
class Invoker {
    private Command command;

    public void setCommand(Command command) {
        this.command = command;
    }

    public void executeCommand() {
        if (command != null) {
            command.execute();
        }
    }
}
  1. 测试代码
public class CommandPatternDemo {
    public static void main(String[] args) {
        // 创建Receiver
        Receiver receiver = new Receiver();
        // 创建Command并关联Receiver
        Command command = new ConcreteCommand(receiver);
        // 创建Invoker并设置Command
        Invoker invoker = new Invoker();
        invoker.setCommand(command);
        // 调用Invoker执行命令
        invoker.executeCommand();
    }
}

在上述代码中,Receiver类的action方法执行具体的业务操作。ConcreteCommand类实现Command接口,在execute方法中调用Receiveraction方法。Invoker类通过setCommand方法接收命令,并在executeCommand方法中执行命令。最终在main方法中展示了整个命令模式的调用流程。