zoukankan      html  css  js  c++  java
  • 设计者模式之GOF23命令模式

    命令模式Command

    将一个请求封装为一个对象,从而使我们可用不同的请求对客户参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式,事务transaction模式

    在命令发出,命令执行前后可以进行相关操作也具有更高的扩展性,包括多个执行者,多个命令的情况

    结构:

    -Command抽象命令类

    -ConcreteCommand具体命令类(持有Receiver类)

    -Invoker调用者/请求者(持有Command类,并不直接和执行者交互)

    -Receiver接收者/执行者

    -客户端

    开发中常见的场景:

    -Struts2中,action的整个调用过程中就有命令模式

    -数据库事务机制的底层实现

    -命令的撤销和恢复

    例子:下达命令,执行的过程

    /**
     * 命令真正的执行者
     * @author 小帆敲代码
     *
     */
    public class Receive {
      public void action() {
       System.out.println("Receive.action()");
      }
    }

    public interface Command {
      void execute();//执行
    }
    class ConcreteCommand implements Command{
      
     private Receive receive;//可以是容器,一个命令多个执行者
     
     public ConcreteCommand(Receive receive) {
      super();
      this.receive = receive;
     }
     @Override
     public void execute() {
      receive.action();
     }
    }

    /**
     * 命令的发起者
     * @author 小帆敲代码
     *
     */
    public class Invoke {
      private Command command;//可以是容器持有多个命令
      public Invoke(Command command) {
       super();
       this.command = command;
      }
      public void call() {
       command.execute();
      }
    }

    public class Client {
    public static void main(String[] args) {
     Command c=new ConcreteCommand(new Receive());
     Invoke i=new Invoke(c);
     i.call();
    }
    }

  • 相关阅读:
    2019-9-2-win10-uwp-判断本地ip
    2018-8-10-使用-Resharper-特性
    2018-8-10-WPF-checkbox文字下掉
    2018-8-10-调试-ms-源代码
    2018-8-10-cant-found-Microsoft.VSSDK.BuildTools.15.0.26201
    2019-9-18-WPF-如何调试-binding
    2018-8-10-WPF-控件继承树
    2018-8-10-sublime-Text-正则替换
    植物大战僵尸阳光冷却地址
    cs1.6 人物地址查询
  • 原文地址:https://www.cnblogs.com/code-fun/p/11362647.html
Copyright © 2011-2022 走看看