首页 > 其他分享 >命令模式(Command)

命令模式(Command)

时间:2022-11-26 18:02:15浏览次数:39  
标签:void 模式 命令 command Receiver Command public

将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。

这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。

 

结构:
  Clinet 客户端:下发命令的类,持有Command 命令类。

      大哥说:我渴了。

  Command 命令类:管理命令的类,持有Receiver 接收者。

      大哥的小甜心:大哥要喝水,现在是冬天,要准备热水,我从商店拿水过来,然后让人捂一捂,热了再给大哥喝。

  Receiver 接收者:执行命令的类。

      商店:提供水。


 

接收者:具体执行命令。

public class Receiver {
    public void action(){
        System.out.println(this.getClass().getName()+"开始执行任务");
    }
}

命令(接口):

public interface Command {
    void execute();
}

命令类:通过持有接收者的应用,可以调用接收者执行命令,在命令执行前后可以对命令进行处理。

class ConcreteCommand implements Command{
    private Receiver receiver;//真正的执行者

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

    @Override
    public void execute() {
        //在此次可以进行设计
        receiver.action();
    }
}

客户端:发起命令,持有命令类,通过命令类下发命令。

public class Invoke {
    private Command command;//持有命令

    public Invoke(Command command) {
        this.command = command;
    }

    public void call(){
        command.execute();
    }
}

测试:

public class Client {
    public static void main(String[] args) {
        //命令管理对象,确定执行命令者
        Command command = new ConcreteCommand(new Receiver());
        //发布命令者,使用命令管理对象
        Invoke i = new Invoke(command);
        //下发命令
        i.call();
    }
}

运行结果:

 

标签:void,模式,命令,command,Receiver,Command,public
From: https://www.cnblogs.com/lurenjia-bky/p/16927907.html

相关文章

  • 企业办公新模式,随时随地云上协同!
    如今,越来越多人参与到项目中进行协同,因此对企业内部的协同办公提出了更高的要求,同时加之大环境下的居家办公要求,导致很多人一回到家之后就会出现无电脑可用、没有办公室电脑......
  • Centos常用硬件查看命令
    1、查看硬盘信息查看磁盘使用情况可以使用【lsblk】【fdisk-l】【df-h】等命令进行查看,每个命令有多种使用方法,这里只介绍最基本的使用方法。查看磁盘和分区分布,可以......
  • docker常用命令
    docker的常用命令帮助命令dockerversion#显示docker的版本信息dockerinfo#显示docker的系统的详细信息docker命令---help#帮助命令帮助文档的地址:https://......
  • D110设计模式_4备忘录模式20221122
     备忘录模式(MementoPattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。客户不与备忘录类耦合,与备忘录管理类耦合。优点: 1、给用......
  • 使用MeshCmd实现AMT命令行远程开机
        MeshCmd(MeshCommander)是一个新的全功能命令行工具,适用于在Windows和Linux上运行的英特尔®AMT。新工具称为“MeshCmd”,也称为“MeshCommand”。它使使用......
  • Linux操作系统之hostname 命令
    前言①hostname显示或设置系统的主机名。②Linux操作系统查看主机名hostname的两种方式通过hostname命令来查看本机的hostname;命令: hostnameLinux操作系统的hostname是一......
  • Linux操作系统之hostname 命令
    前言①hostname显示或设置系统的主机名。②Linux操作系统查看主机名hostname的两种方式通过hostname命令来查看本机的hostname;命令: hostnameLinux操作系统的hostname是一......
  • 中介者模式(Mediator )
    用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。场景:公司多个部门之间,若直接互相打交......
  • git命令及常用操作
    1、基础操作1.1、常用命令提交代码gitstatus-sbgitadd.gitcommit-m"fix"gitpushorigindev_20190510001 查询状态gitstatus 查看日志gitlog--st......
  • 迭代器模式(Iterator)
    用来遍历集合的工具。实现方式:使用一个游标记录当前读取位置。容器中使用迭代器:   一般迭代器都有的方法,整个接口:publicinterfaceMyInterator{......