美文网首页
命令模式(Command Pattern)

命令模式(Command Pattern)

作者: 东南枝下 | 来源:发表于2021-02-01 09:26 被阅读0次

命令模式

命令模式(Command Pattern)又称为行动(Action)模式或交易(Transaction)模式

将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

四个角色

  • 接收者
/**
* 接收者(Receiver)角色:该角色负责具体实施和执行一个请求
* <p>
* 顾名思义,是用来接收命令的
*
* @author Jenson
*/
public class Receiver {
/**
* 行动方法
*/
public void action() {
System.out.println("执行动作");
}
}
  • 命令角色
/**
 * 命令(Command)角色:该角色声明一个给所有具体命令类的抽象接口,定义需要执行的命令
 *
 * @author Jenson
 */
public interface Command {
    /**
     * 执行命令的方法
     */
    public void execute();
}
  • 具体命令角色
/**
 * 具体命令(Concrete Command)角色:该角色定义一个接收者和行为之间的弱耦合,实现命令方法,并调用接收者的相应操作
 *
 * @author Jenson
 */
public class ConcreteCommand implements Command {

    Receiver receiver;

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

    @Override
    public void execute() {
        receiver.action();
    }
}
  • 调用者
/**
 * 调用者(Invoker)角色:该角色负责调用命令对象执行请求。
 * <p>
 * 一个调用者可能就调用多条命令了
 *
 * @author Jenson
 */
@Data
public class Invoker {

    private Command command;

    /**
     * 执行命令
     */
    public void action() {
        command.execute();
    }
}

调用

/**
 * 调用
 *
 * @author Jenson
 */
public class CommandMain {
    public static void main(String[] args) {
        // 1、定义调用者,调用者对象就是用来执行命令,个人觉得调用者内部其实可以执行一些日志记录/快照之类的工作,来回溯调用过的命令
        Invoker invoker = new Invoker();

        // 2、定义接收者,这个接收者里面个人觉得就是一些具体的业务代码
        Receiver receiver = new Receiver();

        // 3、定义命名,这里命令里可能就有一些复杂的操作了,可能多个接收者组合操作我觉得都是可以的
        Command command = new ConcreteCommand(receiver);

        // 4、执行
        invoker.setCommand(command);
        invoker.action();
    }
}

相关文章

  • 命令模式(Command Pattern)

    命令模式 命令模式(Command Pattern)又称为行动(Action)模式或交易(Transaction)...

  • 命令模式

    命令模式(Command Pattern) 定义 Encapsulate a request as an obje...

  • 设计模式[18]-命令模式-Comand Pattern

    1.命令模式简介 命令模式(Command Pattern)模式是是行为型(Behavioral)设计模式,将一个...

  • 命令模式(Command Pattern)

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

  • 命令模式(Command Pattern)

    命令模式 意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支...

  • Command模式(命令模式)

    命令模式(Command Pattern)是一种数据驱动的设计模式。Command有时也被成为事件(event)。...

  • 行为型-Command

    命令模式的原理解读 命令模式的英文翻译是 Command Design Pattern。在 GoF 的《设计模式》...

  • 设计模式-命令模式

    命令模式 介绍: 模式模式(Command Pattern),是行为型设计模式之一。命令模式相对于其他的设计模式来...

  • Swift设计模式——命令模式

    什么是命令模式? 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令...

  • Android 架构师之路11 设计模式之命令模式

    Android 架构师之路 目录 1、命令模式概念 1.1 介绍 命令模式(Command Pattern)是一种...

网友评论

      本文标题:命令模式(Command Pattern)

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