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();
    }
}

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

相关推荐
敲敲了个代码1 分钟前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
专注VB编程开发20年15 分钟前
C#全面超越JAVA,主要还是跨平台用的人少
java·c#·.net·跨平台
小信啊啊16 分钟前
Go语言切片slice
开发语言·后端·golang
阿华hhh19 分钟前
Linux系统编程(标准io)
linux·开发语言·c++
南_山无梅落32 分钟前
9.Python3集合(set)增删改查和推导式
java·开发语言
sg_knight1 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm
爱笑的眼睛111 小时前
超越MSE与交叉熵:深度解析损失函数的动态本质与高阶设计
java·人工智能·python·ai
程序喵大人1 小时前
推荐个 C++ 练习平台
开发语言·c++·工具推荐
全靠bug跑1 小时前
Spring Cloud OpenFeign 实战三部曲:快速集成 · 连接池优化 · 客户端抽取
java·spring boot·openfeign