命令模式笔记

定义

命令模式是将「请求」封装成对象,尝试以对象来代表实际行动。命令对象可以把行动及其参数封装起来,使这些行动可以被:重复多次取消取消后又再重做

使用

命令模式通常由commandreceiverinvokerclient组成。

invoker命令调用者持有一个command命令对象,并在特定时刻触发命令对象的execute()方法,指令请求的命令。

receiver命令接收者知道如何进行具体的执行操作(action()方法)。

具体的command命令对象定义了具体动作和接收者之间的绑定关系,它持有一个receiver命令接收者对象,当invoker调用了commandexecute()方法时,其调用receiveraction()方法来执行具体动作。

client对象负责创建具体的command对象,并设置其receiver对象。

代码(Java)

// 命令接口
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 Invoker {
    Command command;
​
    public Invoker(Command command) {
        this.command = command;
    }
    public void invoker() {
        command.execute();
    }
}
​
// 命令接受者
public class Receiver {
    public void action() {
        System.out.println("Receiver start action");
    }
}
​
// Client 测试类
public class Client {
    public static void main(String[] args) {
        Receiver receiver = new Receiver();
        Command command = new ConcreteCommand(receiver);
        Invoker invoker = new Invoker(command);
        invoker.invoker();
    }
}

总结

命令模式可以让命令的请求者和接收者之间解耦,在被解耦的两者之间是通过添加一个中间层--命令对象进行沟通的。

原文地址:https://www.cnblogs.com/zawier/p/6946223.html