• command模式


    1、核心意图:
    将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求
    排队或记录请求日志,以及支持可撤消的操作。

    2、command模式构成:
    • 客户角色(Client):创建一个具体命令对象,并确定其接收者
    • 命令角色(Command):声明一个给所有具体命令类的抽象接口。这是一个抽象角色,通常由一个接口 或抽象类实现
    • 具体命令角色(ConcreteCommand):定义一个接收者和行为之间的弱耦合,实现execute方法,负责调用接收者的相应操作
    • 请求者角色(Invoker):负责调用命令对象执行请求。
    • 接收者角色(Receiver):负责具体实施和执行一个请求

    3、生活例子:


    4、代码实现:
    Client.java 例子中的”顾户“
    Java代码 复制代码 收藏代码
    1. public class Client
    2. {
    3. public static void main(String[] args)
    4. {
    5. Receiver receiver = new Receiver();
    6. Command command = new ConcreteCommand(receiver);
    7. Invoker invoker = new Invoker(command);
    8. invoker.doInvokerAction();
    9. }
    10. }


    Command.java 例子中的”订单“
    Java代码 复制代码 收藏代码
    1. public interface Command
    2. {
    3. public void execute();
    4. }


    ConcreteCommand.java 例子中的”订单“的相应操作
    Java代码 复制代码 收藏代码
    1. public class ConcreteCommand implements Command
    2. {
    3. private Receiver receiver;
    4. public ConcreteCommand(Receiver receiver)
    5. {
    6. this.receiver = receiver;
    7. }
    8. @Override
    9. public void execute()
    10. {
    11. receiver.doAction();
    12. }
    13. }


    Invoker.java 例子中的”服务员“
    Java代码 复制代码 收藏代码
    1. public class Invoker
    2. {
    3. private Command command;
    4. public Invoker(Command command)
    5. {
    6. this.command = command;
    7. }
    8. public void doInvokerAction()
    9. {
    10. command.execute();
    11. }
    12. }


    Receiver.java 例子中的”厨师“
    Java代码 复制代码 收藏代码
    1. public class Receiver
    2. {
    3. public void doAction()
    4. {
    5. System.out.println("执行任务!");
    6. }
    7. }  
  • 相关阅读:
    TypeScript reflect-metadata 结合方法装饰器实现的一个自定义语法检查的例子
    使用 TypeScript 自定义装饰器给类的方法增添监听器 Listener
    爬取本blog所有文章链接
    90分钟掌握Python多线程爬虫(全程实战)
    python学习笔记
    Python零基础爬虫教学(实战案例手把手Python爬虫教学)
    开发,功能测试点,注意
    workerman
    tp6 文档
    公共方法
  • 原文地址:https://www.cnblogs.com/bjanzhuo/p/3576061.html
Copyright © 2020-2023  润新知