设计模式之命令模式讲解

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

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

相关推荐
le1616165 分钟前
设计模式之单例模式
单例模式·设计模式
Knight_AL15 分钟前
从单例模式说起:Java 常见设计模式的理解与实践
java·单例模式·设计模式
Engineer邓祥浩34 分钟前
设计模式学习(10) 23-8 装饰者模式
python·学习·设计模式
老蒋每日coding1 小时前
基于LangGraph的AI Agent并行化设计模式详解
设计模式·ai编程
GISer_Jing1 小时前
AI学习资源总结:免费开放,入门至深入,持续更新
人工智能·学习·设计模式·prompt·aigc
Geoking.2 小时前
【设计模式】策略模式(Strategy)详解:把 if-else 变成可切换的算法
java·设计模式·策略模式
老蒋每日coding2 小时前
AI智能体设计模式系列(二)—— 路由模式
人工智能·设计模式
老蒋每日coding3 小时前
AI智能体设计模式系列(四)—— 反思模式
设计模式
sxlishaobin3 小时前
设计模式之策略模式
设计模式·策略模式
佛祖让我来巡山5 小时前
【面试题】什么是观察者模式?一般用在什么场景?
观察者模式·设计模式