zoukankan      html  css  js  c++  java
  • 命令模式--烤羊肉串引起来的思考

      命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
      命令模式作用:1、它能较容易地设计一个命令队列;2、在需要的情况下,可以叫容易地将命令记入日志3、允许接收请求的一方决定是否要否决请求。4、可以容易地实现对请求的撤销和重做5、由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易。

      最关键的优点就是命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分隔开。

    以下是代码示例:

     1 //Invoker类,要求该命令执行这个请求
     2 public class Invoker {
     3     private Command command;
     4     public void setCommand(Command command){
     5         this.command = command;
     6     }
     7     public void executeCommand(){
     8         command.execute();
     9     }
    10 }
     1 //Command类,用来声明执行操作的接口.
     2 public abstract class Command {
     3     protected Receiver receiver;
     4     
     5     public Command(Receiver receiver){
     6         this.receiver = receiver;
     7     }
     8     //执行命令
     9     abstract public void execute();
    10 }
     1 //ConcreteCommand类,将一个接收者对象绑定于一个动作,调用接收者相应操作,以实现execute。
     2 public class ConcreteCommand extends Command{
     3     //构造方法
     4     public ConcreteCommand(Receiver receiver) {
     5         super(receiver);
     6     }
     7 
     8     //执行命令
     9     @Override
    10     public void execute() {
    11         receiver.action();
    12     }
    13     
    14 }
    1 //Receiver类,知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接收者。
    2 public class Receiver {
    3     
    4     public void action(){
    5         System.out.println("执行请求");
    6     }
    7 }
     1 //客户端测试类
     2 public class TestClinet {
     3     public static void main(String[] args) {
     4         Receiver r = new Receiver();
     5         Command c = new ConcreteCommand(r);
     6         Invoker i = new Invoker();
     7         i.setCommand(c);
     8         i.executeCommand();//执行请求
     9     }
    10 }

    UML图:

      

  • 相关阅读:
    js中两种定时器,setTimeout和setInterval的区别
    简单说 JavaScript实现雪花飘落效果
    CSS 浮动 float 属性
    使用jQuery做简单的图片轮播效果
    DIV+CSS中标签dl dt dd常用的用法
    CSS display的几个常用的属性值,inline , block, inline-block
    Confluence代码块(Code Block)宏
    salt总结
    快速搭建rabbitmq单节点并配置使用
    使用python脚本配置zabbix发送报警邮件
  • 原文地址:https://www.cnblogs.com/lixianyuan-org/p/9536558.html
Copyright © 2011-2022 走看看