美文网首页
命令模式

命令模式

作者: RickGe | 来源:发表于2017-03-05 13:08 被阅读6次

01 定义

命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

02 情景

通过电灯开关的按钮来控制电灯的打开或者关闭。

03 类图

CommandPattern.png

04 Class

// 灯:Receiver 接收者,真正执行命令的对象。
public class Light {
    private String name;
    public Light(String name) {
        this.name = name;
    }
    // 开灯
    public void on(){
        System.out.println(String.format("The %s light is on", name));
    }
    // 关灯
    public void off(){
        System.out.println(String.format("The %s light is off", name));
    }
}
// 定义命令的接口
public interface Command {
    public void execute();
}
// 开灯命令: 命令接口实现对象,是“虚”的实现;通常会持有接收者(Light),并调用接收者的功能来完成命令要执行的操作。
public class LightOnCommand implements Command {
    private Light light;
    public LightOnCommand(Light light) {
        this.light = light;
    }
    @Override
    public void execute() {
        light.on();
    }
}
// 关灯命令: 命令接口实现对象,是“虚”的实现;通常会持有接收者(Light),并调用接收者的功能来完成命令要执行的操作。
public class LightOffCommand implements Command {
    private Light light;
    public LightOffCommand(Light light) {
        this.light = light;
    }
    @Override
    public void execute() {
        light.off();
    }
}
// Invoker:调用器
// 要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。
// 这个是客户端真正触发命令并要求命令执行相应操作的地方,也就是说相当于使用命令对象的入口。
public class RemoteControl {
    private Command command;
    public void setCommand(Command command){
        this.command = command;
    }
    public void pressButton(){
        command.execute();
    }
}

05 测试

// Client:创建具体的命令对象,并且设置命令对象的接收者。
Light light = new Light("Living room");
LightOnCommand lightOnCommand = new LightOnCommand(light);
LightOffCommand lightOffCommand = new LightOffCommand(light);

RemoteControl remoteControl = new RemoteControl();
// 开灯
remoteControl.setCommand(lightOnCommand);
remoteControl.pressButton();
// 关灯
remoteControl.setCommand(lightOffCommand);
remoteControl.pressButton();
TestResult.png

相关文章

  • 12.vim的使用技巧

    命令模式 、命令行模式、编辑模式: INSERT 首次进入文件: 命令模式输入: 表示 命令行模式出现...

  • 五、Linux vim编辑器

    vim编辑器三种模式:命令模式、编辑模式、末行模式 1.命令模式: vim进入文件后就是命令模式 1.1 命令模式...

  • 终端操作文件

    VIM 模式切换从命令模式->编辑模式:i,a,o,I,A,O从编辑模式->命令模式:ESC从命令模式->末行模式...

  • vim 操作 && Mac 配置本地Apache

    一、vim 的基本命令操作 vim 的模式: 编辑模式 ,命令模式 编辑模式: 命令模式:可以通过命令 最重要的命...

  • Vim高效编辑器

    Vim程序员高效编辑器 命令模式,输入模式,底线命令模式 默认进入vim就是命令模式,输入i变为输入模式 命令模式...

  • Command模式

    命令模式(Command) 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Tran...

  • 设计模式详解——命令模式

    本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之命令模式。 一、命令模式的概念 命令模式...

  • Vi编辑器

    命令模式 文本输入模式 末行模式。 插入模式 移动光标: 删除命令: 撤销命令: 重复命令 文本行移动: 复制粘贴...

  • JavaScript设计模式七(命令模式)

    JavaScript设计模式七(命令模式) 定义: 命令模式是最简单和优雅的模式之一,命令模式中的命令指的是一个执...

  • Cisco 路由器配置命令大全(二)

    (1)模式转换命令 用户模式----特权模式,使用命令"enable"特权模式----全局配置模式,使用命令"co...

网友评论

      本文标题:命令模式

      本文链接:https://www.haomeiwen.com/subject/aiisgttx.html