java 实现命令行模式

命令模式是一种行为设计模式,它允许您将请求封装为对象,以便您可以将其参数化、队列化、记录和撤销。在 Java 中实现命令模式涉及创建一个命令接口,具体命令类,以及一个接收者类,该接收者类执行实际操作。下面是一个简单的 Java 命令模式示例:

首先,创建一个命令接口(Command):

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

然后,创建一个具体命令类,实现该接口:

java 复制代码
public class LightOnCommand implements Command {
    private Light light;

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

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

创建另一个具体命令类:

java 复制代码
public class LightOffCommand implements Command {
    private Light light;

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

    @Override
    public void execute() {
        light.turnOff();
    }
}

接下来,创建一个接收者类,该类包含实际的操作:

java 复制代码
public class Light {
    public void turnOn() {
        System.out.println("灯已打开");
    }

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

现在,创建一个遥控器类,该类可以设置命令并执行它们:

java 复制代码
public class RemoteControl {
    private Command command;

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

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

最后,可以测试这些类:

java 复制代码
public class Main {
    public static void main(String[] args) {
        Light light = new Light();
        Command lightOn = new LightOnCommand(light);
        Command lightOff = new LightOffCommand(light);

        RemoteControl remoteControl = new RemoteControl();

        remoteControl.setCommand(lightOn);
        remoteControl.pressButton();

        remoteControl.setCommand(lightOff);
        remoteControl.pressButton();
    }
}

这是一个简单的命令模式示例,它演示了如何使用命令对象将操作参数化,并通过遥控器执行这些操作。您可以根据需要扩展和修改这个示例以满足特定的需求。

相关推荐
JAVA面经实录91722 分钟前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
周杰伦fans1 小时前
AutoCAD .NET 二次开发:深入理解 EntityJig 的工作原理与正确实现
开发语言·.net
许彰午2 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
Bat U3 小时前
JavaEE|多线程初阶(七)
java·开发语言
谭欣辰3 小时前
C++ 排列组合完整指南
开发语言·c++·算法
foundbug9994 小时前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab
XDH_CS4 小时前
MySQL 8.0 安装与 MySQL Workbench 使用全流程(超详细教程)
开发语言·数据库·mysql
小短腿的代码世界5 小时前
Qt实时盈亏计算深度解析:从持仓数据到动态盈亏展示
开发语言·qt
小康小小涵5 小时前
基于ESP32S3实现无人机RID模块底层源码编译
linux·开发语言·python