java设计模式14(命令模式)

命令模式可以将请求发送者和请求接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。

命令模式的定义:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。

命令模式的结构与实现:
1.Command(抽象命令类):抽象命令类一般是一个抽象类或接口,在其中声明了用于执行请求的方法,通过这些方法可以调用请求接收者的相关操作。

public abstract class Command {

    public abstract void execute();

}

2.ConcreteCommand(具体命令类):具体命令类是抽象命令类的子类,实现了在抽象命令类中声明的方法,它对应具体的接收者对象,将接收者对象的动作绑定其中。

public class ConcreteCommand extends Command {
    
    private Receiver receiver;
    
    public  ConcreteCommand() {
        receiver=new Receiver();
    }

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

}

3.Invoker(调用者):调用者即请求发送者,它通过命令对象来执行请求。一个调用者并不需要在设计时确定其接收者,因此它只与抽象命令类之间存在关联关系。

public class Invoker {

    private Command command;
    
    public Invoker(Command command) {
        this.command=command;
    }
    
    public void setCommand(Command command) {
        this.command = command;
    }
    
    public void request() {
        //调用命令类中的方法
        command.execute();
    }
}

4.Receiver(接收者):接收者执行与请求相关的操作,具体实现对请求的业务处理。

public class Receiver {
    
    public void action() {
        System.out.println("接收者调用具体业务!");
    }

}

5.Test:

public class Test {

    public static void main(String[] args) {
        ConcreteCommand command=new ConcreteCommand();
        Invoker invoker=new Invoker(command);
        //接收者调用具体业务!
        invoker.request();
    }
    
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【学习难度:★★★☆☆,使用频率:★★★★☆】直接出处:命令模式梳理和学习:https://github.com/...
    BruceOuyang阅读 4,296评论 0 3
  • 目录 本文的结构如下: 什么是命令模式 为什么要用该模式 模式的结构 代码示例 优点和缺点 适用环境 模式应用 总...
    w1992wishes阅读 4,853评论 2 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,879评论 1 32
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,018评论 6 13
  • 子涵: 你是一个文静,听话的女孩子!你人缘很好!结交了许多好朋友,老师很喜欢你的字,字写的特别的规范漂亮,在班里你...
    侯海霞阅读 5,539评论 0 0

友情链接更多精彩内容