• Java设计模式(20)——行为模式之命令模式(Command)


    一、概述

      概念

      

       

      类似C中的callback!

      UML简图

      

      角色

      客户端:创建具体命令,指定接收者

      命令接口:声明命令的接口

      具体命令:定义接收者和行为之间的弱耦合(execute执行方法)

      请求者(Invoker):负责调用命令执行请求

      接收者:具体实施和执行请求

      举个《Java与模式》中的栗子:

      

      

    二、实践

      给出角色的示例性代码

      命令接口

    /**
     * 命令接口
     *
     * @author Administrator
     **/
    public interface Command {
        void execute();
    }

      具体命令

    /**
     * 具体命令
     *
     * @author Administrator
     **/
    public class ConcreteCommand implements Command{
        private Receiver receiver;
    
        public ConcreteCommand(Receiver receiver) {
            this.receiver = receiver;
        }
    
        @Override
        public void execute() {
            receiver.action();
        }
    }

      请求者

    /**
     * 请求者
     *
     * @author Administrator
     **/
    public class Invoker {
        private Command command;
    
        public Invoker(Command command) {
            this.command = command;
        }
        public void action() {
            command.execute();
        }
    }

      接收者

    /**
     * 接收者
     *
     * @author Administrator
     **/
    public class Receiver {
        public void action() {
            // 示例性的行动代码
            System.out.println("接收者行动#action()");
        }
    }

      示意性客户端

    /**
     * 客户端
     * @author  Administrator
     **/
    public class Client {
        public static void main(String[] args) {
            Receiver receiver = new Receiver();
            Command command = new ConcreteCommand(receiver);
            Invoker invoker = new Invoker(command);
            invoker.action();
        }
    }

    // 输出接收者行动

  • 相关阅读:
    Visifire Chart控件设置 柱状图 条的宽窄
    silverlight+wcf 获得web参数
    Maven教程(转载)
    Eclipse插件CheckStyle的安装和使用
    log4net面面观之工作原理
    javabean实体类对象转为Map类型对象的方法(转发)
    ORACLE数据库创建用户名和表空间
    ORACLE 12C PDB 维护基础介绍
    int 与 Integer--话说数组转集合
    Shiro--权限控制
  • 原文地址:https://www.cnblogs.com/jiangbei/p/7766737.html
Copyright © 2020-2023  润新知