设计模式之命令模式讲解

概念:命令模式(Command Pattern)又称行动(Action)模式或交易(Transaction)模式。将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

  • 抽象命令:定义要执行的操作。
  • 具体命令:持有命令的真正执行者,并调用其具体操作。
  • 命令接收者:真正的命令执行者,定义所有的具体操作。
  • 命令调用者:接收命令,并调用命令的具体行为。

接下来用一个开关灯的例子,帮助大家理解这个结构。

java 复制代码
public interface Command {
    void execute();
}

public class LightOnCommand implements Command {
    private final Light light;
    public LightOnCommand(Light light) {
        this.light = light;
    }
    @Override
    public void execute() {
        light.lightOn();
    }
}

public class LightOffCommand implements Command {
    private final Light light;
    public LightOffCommand(Light light) {
        this.light = light;
    }
    @Override
    public void execute() {
        light.lightOff();
    }
}

public class Light {
    public void lightOn() {
        System.out.println("开灯");
    }
    public void lightOff() {
        System.out.println("关灯");
    }
}

public class Invoker {
    private final Command command;
    public Invoker(Command command) {
        this.command = command;
    }
    public void invoke() {
        if (command != null) {
            command.execute();
        }
    }
}

public class Demo {
    public static void main(String[] args) {
        Light light = new Light();
        Invoker invokerOn = new Invoker(new LightOnCommand(light));
        Invoker invokerOff = new Invoker(new LightOffCommand(light));
        invokerOn.invoke();
        invokerOff.invoke();
    }
}

如果大家需要视频版本的讲解,欢迎大家关注我的B站:

十五、设计模式之命令模式讲解

相关推荐
路明非1261 天前
QT界面实现2
命令模式
让我上个超影吧1 天前
设计模式【工厂模式和策略模式】
java·设计模式·策略模式
Query*1 天前
Java 设计模式——建造者模式:从原理到实战的极简指南
java·设计模式·建造者模式
Tiny_React1 天前
智能体设计模式-CH05:工具使用(Tool Use)
设计模式
舒克起飞了1 天前
设计模式——建造者模式
设计模式·建造者模式
Tiny_React1 天前
智能体设计模式-CH06:规划(Planning)
设计模式
Meteors.1 天前
23种设计模式——迭代器模式 (Iterator Pattern)详解
java·设计模式·迭代器模式
Tiny_React1 天前
智能体设计模式-CH03:并行化(Parallelization)
设计模式
Tiny_React1 天前
智能体设计模式-CH02:路由(Routing)
设计模式
Deschen1 天前
设计模式-组合模式
java·设计模式·组合模式