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

  • 相关阅读:
    邻居子系统 之 更新neigh_update
    邻居子系统 之 邻居项查找neigh_lookup、___neigh_lookup_noref
    遍历集合的方法总结
    Java集合中List,Set以及Map等集合体系
    八大数据结构分类
    servlet和jsp的区别
    Web前端和Web后端的区分
    (转)为什么JavaWeb放弃jsp,去做前后端分离
    面向对象的三大基本特征和五大基本原则
    (转)2019年给Java编程初学者的建议(附学习大纲)
  • 原文地址:https://www.cnblogs.com/code-fun/p/11362647.html
Copyright © 2011-2022 走看看