命令模式

作者: 某昆 | 来源:发表于2018-10-14 11:18 被阅读3次

本文主要内容

  • 命令模式说明
  • 命令模式示例

1、命令模式说明

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

假设现有一个遥控器,可以编程,自定义功能。现在我们需要用遥控器来实现电灯的开关。我们当然可以在遥控器的代码中加很多if,实现开关电灯。但仔细想一想,电灯可能有很多品种,它们的具体实现可能有不同,如果要更换电灯,那就需要更改遥控器的代码。同时,遥控器是可编程的,今天这个按钮是控制电灯的,明天它可能要去控制电视机了,怎么办呢?面对这种不确定的情况,就是要面向抽象接口编程,使用命令模式,将命令请求与命令的接收者解耦才行。

命令模式UML类图

2、命令模式示例

public interface Command {
//命令接口
public void execute();
}

public class LightCommand implements Command{

private Action mAction;

@Override
public void execute() {
    mAction.action();
}

public void setAction(Action action){
    mAction = action;
}

}
public interface Action {

public void action();
}
public class Light implements Action{

@Override
public void action(){
    System.out.println("开灯");
}
}
public class Main {

public static void main(String[] args) {
    Action action = new Light();
    LightCommand command = new LightCommand();
    command.setAction(action);
    command.execute();
}
}

代码比较简单,我就不再详细说明了。

其实在工作中,设计模式的应用是无所不在的。很多人在刚开始学习设计模式的时候,觉得学这东西哪天能用上呢?当自己开发新的需求,或者重构的时候,我经常会想这个地方应该怎么写更合理,怎么写更加容易扩展,怎么写代码更优雅,这就是设计模式的应用,虽然不至于说,一看到某个地方就想到用哪个设计模式,但这也是我们开始思索架构的开始。

回想这么多的设计模式,工作中遇到难题,想不出用啥设计模式不要紧,学习这东西不能拘泥于形式。但我们记得一条就好,不要面向对象了,面向抽象编程就可以。比如说遥控器这个示例,其中一共有两个不确定点:

  • 电灯的种类不同,开关实现会有不同
  • 遥控器的按键可编程,可能会更改用途

有一个不确定点,那就是一个抽象点,一个接口或者说基类。提出取这些接口,剩下的不就水到渠成了吗?

相关文章

  • 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/ypjzaftx.html