Java 中命令模式,请用代码具体举例

在Java中,命令模式是一种行为设计模式,它允许将请求封装成一个对象,从而使得可以参数化其他对象对请求进行调用、队列化请求、或者记录请求日志,同时支持可撤销的操作。

下面是一个简单的示例代码,展示了如何使用命令模式:

java 复制代码
// 定义命令接口
interface Command {
    void execute();
}

// 具体命令类,实现了命令接口
class LightOnCommand implements Command {
    private Light light;

    public LightOnCommand(Light light) {
        this.light = light;
    }

    public void execute() {
        light.turnOn();
    }
}

// 接收者类,真正执行命令的对象
class Light {
    public void turnOn() {
        System.out.println("灯已打开");
    }

    public void turnOff() {
        System.out.println("灯已关闭");
    }
}

// 命令的调用者,负责执行命令
class RemoteControl {
    private Command command;

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

    public void pressButton() {
        command.execute();
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建接收者对象
        Light light = new Light();

        // 创建具体命令对象,将接收者对象传入
        Command lightOnCommand = new LightOnCommand(light);

        // 创建命令的调用者对象
        RemoteControl remoteControl = new RemoteControl();

        // 设置命令
        remoteControl.setCommand(lightOnCommand);

        // 调用命令
        remoteControl.pressButton();
    }
}

在这个示例中,命令模式将"打开灯"的操作封装成了一个命令对象LightOnCommand,并且通过RemoteControl来执行这个命令。这样做的好处是,如果有其他命令,比如"关闭灯"的操作,只需要创建相应的命令对象并设置给RemoteControl即可,而不需要直接修改RemoteControl的代码。

相关推荐
nnerddboy几秒前
Rust教程04:引用、借用与切片
开发语言·后端·rust
Rain的Java大神之路10 分钟前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
jerryinwuhan23 分钟前
《Python数据预处理》第四章
开发语言·python
长江&后浪25 分钟前
防火墙的描述
开发语言·网络·php
counting money28 分钟前
Tomcat 专题:从基础架构到性能调优与 WebSocket 实战
java·websocket·tomcat
观无1 小时前
若依EasyExcel实现单元格合并
开发语言·前端·javascript
雨晨源码(同名B站)1 小时前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析
开发语言·hadoop·爬虫·python·信息可视化·毕业设计
我不是疯子是傻子1 小时前
串口通信数据帧粘包拆包再进化:基于 Qt 的滑动窗口与 CRC 校验实战
开发语言·qt
程序员老陆1 小时前
Qt中实现窗口真全屏(覆盖Windows任务栏)
开发语言·windows·qt
xiaohaiAIgeo1 小时前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识