zoukankan      html  css  js  c++  java
  • 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. }  
  • 相关阅读:
    推荐网址:Response.WriteFile Cannot Download a Large File
    为什么是 My?
    Fox开发杂谈
    DCOM配置为匿名访问
    连接到运行 Windows 98 的计算机
    OO面向对象以后是什么
    Com+的未来是什么?
    fox 表单和类库的加密及修复
    来自 COM 经验的八个教训
    VFP的加密问题
  • 原文地址:https://www.cnblogs.com/bjanzhuo/p/3576061.html
Copyright © 2011-2022 走看看