设计模式之命令模式讲解

概念:命令模式(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站:

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

相关推荐
是2的10次方啊13 小时前
设计模式与生活⑯:天冷了,出门这身得一层层配
设计模式
心若自由何处是束缚1 天前
适配器模式:从原理到实战的完整指南
设计模式·适配器模式
是2的10次方啊1 天前
设计模式与生活⑮:看到哪儿了,得有个地方替你记着
设计模式
2601_967979122 天前
设计模式 - 访问者模式
设计模式·访问者模式·应用场景·对象结构·操作分离
是2的10次方啊2 天前
设计模式与生活⑭:一栋楼,共用一份热
设计模式
是2的10次方啊4 天前
设计模式与生活⑬:你坐几号线,谁来运营是另一回事
设计模式
Tt有了t4 天前
设计模式速查
java·python·设计模式
一条Go4 天前
四个进程,一把锁:Alioth 的告警评测为什么不需要消息队列
后端·设计模式·架构
一缕82年的清风5 天前
被中产唾弃的“十元快剪”,藏着最狠的极客工程学
人工智能·设计模式
是2的10次方啊5 天前
设计模式与生活⑫:周报又到手,别从空白开始
设计模式