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();
    }
    }

  • 相关阅读:
    js解析json数据
    json.stringify
    [Eclipse的Maven项目搭建,仅为测试Maven功能]如何在Eclipse下搭建Maven项目
    在 Windows 中配置Maven:
    jsp引入文件时候经常遇到的${ctx}
    <%%> <%! %> <%=%> <%-- --%> jsp中jstl一些运用
    Spring MVC之@RequestBody, @ResponseBody 详解
    Spring MVC之@RequestMapping 详解
    Spring MVC之@RequestParam @RequestBody @RequestHeader 等详
    @RequiresPermissions 解释
  • 原文地址:https://www.cnblogs.com/code-fun/p/11362647.html
Copyright © 2011-2022 走看看