美文网首页
基本命令模式

基本命令模式

作者: Stroman | 来源:发表于2018-05-06 14:24 被阅读10次

概述

每个命令被看成是一个对象来处理,命令调用者是实际发起命令的一方,命令接收者是实际执行命令的一方。用户需要做的就是让命令发起者执行某命令,并且从命令执行者那里获取命令执行以后的结果就行,所以用户只和命令发起者和命令执行者之间存在联系。

优点

  1. 解耦。就是那个命令发起者和执行者。
  2. 添加命令方便。
  3. 灵活,其实概括起来就这俩字。

缺点

  1. 命令可以很多,那不同的命令就有不同的类呗,那系统中的类就多呗,系统就复杂呗。

类图

基本命令模式.png

实现

调用

package com.company;

public class Main {

    public static void main(String[] args) {
    // write your code here
        Receiver receiver = new Receiver();

        CommandInterface command0 = new Command0(receiver);
        CommandInterface command1 = new Command1(receiver);
        CommandInterface noCommand = new NoCommand(receiver);

        Invoker invoker = new Invoker();

        invoker.setCommandInterface(command0);
        invoker.execute(command0);

        invoker.setCommandInterface(command1);
        invoker.execute(command1);

        invoker.setCommandInterface(noCommand);
        invoker.execute(noCommand);
    }
}

执行

执行了命令0
执行了命令1
此处执行了空命令,就是啥都不做

Process finished with exit code 0

命令调用者

package com.company;

public class Invoker {
    /**
     * 一个抽象类型的私有成员
     */
    private CommandInterface commandInterface;

    /**
     * 供外界调用设置命令用的
     * @param commandInterface 一个命令
     */
    public void setCommandInterface(CommandInterface commandInterface) {
        this.commandInterface = commandInterface;
    }

    /**
     * 执行抽象命令的接口
     * @param command
     */
    public void execute(CommandInterface command) {
        commandInterface.execute();
    }
}

命令接收者

package com.company;

public class Receiver {
    public void action1() {
        System.out.println("执行了命令1");
    }

    public void action0() {
        System.out.println("执行了命令0");
    }
}

命令接口

package com.company;

public interface CommandInterface {
    /**
     * 执行命令的方法。
     */
    void execute();
}

命令0

package com.company;

public class Command0 implements CommandInterface {
    private Receiver receiver;

    public Command0(Receiver receiver) {
        this.receiver = receiver;
    }

    /**
     * 执行命令的方法。
     */
    @Override
    public void execute() {
        receiver.action0();
    }
}

命令1

package com.company;

public class Command1 implements CommandInterface {
    private Receiver receiver;

    public Command1(Receiver receiver) {
        this.receiver = receiver;
    }

    /**
     * 执行命令的方法。
     */
    @Override
    public void execute() {
        receiver.action1();
    }
}

无命令

package com.company;

public class NoCommand implements CommandInterface {
    private Receiver receiver;

    public NoCommand(Receiver receiver) {
        this.receiver = receiver;
    }

    /**
     * 执行命令的方法。
     */
    @Override
    public void execute() {
        System.out.println("此处执行了空命令,就是啥都不做");
    }
}

Chapter 6 the Command Pattern (Encapsulating Invocation)

相关文章

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

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

  • 2路由器基本配置命令

    路由器基本配置命令 基本命令: Enable 进入特权模式 Configure terminal进入全局配置模式 ...

  • vim常用命令与配置

    vim 长处在于改代码 vim 命令基本单词介绍 insert模式 normal模式 普通模式3 命令模式(冒号...

  • Vi

    Vi有三种基本工作模式: + 命令模式 + 文本输入模式 + 末行模式。 ====================...

  • Linux下的文本编辑命令汇总

    一、vi编辑器有3种基本工作模式 分别是:命令模式、文本输入模式、和末行模式。 第一:命令行模式: ...

  • vim基本使用命令

    转自 vi/vim基本使用命令 一、vi基本概念 可分为三种状态:命令模式(command mode),插入模式(...

  • vim

    一、命令模式 命令模式是输入基本命令的地方,此状态下敲击的任何按键都会被当做是命令。 命令模式下方会显示文件名,类...

  • Vim的基础操作

    Vi有三种基本工作模式:命令模式、编辑模式、末行模式。 关系如下: 命令模式:任何时候,不管用户处于何种模式,只要...

  • VIM简单使用介绍

    一、vim的三种命令格式 基本上 vim共分为三种模式,分别是“一般指令模式”、“编辑模式”与“命令行命令模式”。...

  • Mr.Li--python-Linux-vim

    有三种基本工作模式: +命令模式 +文本输入模式 +末行模式。 命令行模式 任何时候,不管用户处于何种模式,只要按...

网友评论

      本文标题:基本命令模式

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