• java设计模式--行为型模式--命令模式


     1                                                 命令模式
     2  概述
     3     将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
     4  
     5  
     6  适用性
     7     1.抽象出待执行的动作以参数化某对象。
     8 
     9     2.在不同的时刻指定、排列和执行请求。
    10 
    11     3.支持取消操作。
    12 
    13     4.支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍。
    14 
    15     5.用构建在原语操作上的高层操作构造一个系统。
    16  
    17  
    18  参与者
    19     1.Command
    20       声明执行操作的接口。
    21 
    22     2.ConcreteCommand
    23       将一个接收者对象绑定于一个动作。
    24       调用接收者相应的操作,以实现Execute。
    25 
    26     3.Client
    27       创建一个具体命令对象并设定它的接收者。
    28 
    29     4.Invoker
    30       要求该命令执行这个请求。
    31 
    32     5.Receiver
    33       知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者。
     1 public class Test {
     2 
     3     public static void main(String[] args) {
     4         Receiver rec = new Receiver();
     5         Command cmd = new CommandImpl(rec);
     6         Invoker i = new Invoker();
     7         i.setCommand(cmd);
     8         i.execute();
     9     }
    10 }
    1 public class Receiver {
    2 
    3     public void receive() {
    4         System.out.println("This is Receive class!");
    5     } 
    6 }
    1 public abstract class Command {
    2     public Command(Receiver receiver) {
    3         this.receiver = receiver;
    4     } 
    5     
    6     protected Receiver receiver;
    7     
    8     public abstract void execute();
    9 }
     1 public class CommandImpl extends Command {
     2 
     3     public CommandImpl(Receiver receiver) {
     4         super(receiver);
     5     }
     6     
     7     public void execute() {
     8         receiver.receive();
     9     }
    10 }
     1 public class Invoker {
     2 
     3     private Command command;
     4     
     5     public void setCommand(Command command) {
     6         this.command = command;
     7     }
     8     
     9     public void execute() {
    10         command.execute();
    11     }
    12 }

    牛B的代码都在不断的重构,方便系统的扩展。今天又见识了...

  • 相关阅读:
    candy——动态规划
    HTTP协议(转)
    linked-list-cycle-ii——链表,找出开始循环节点
    linked-list-cycle——链表、判断是否循环链表、快慢指针
    转: utf16编码格式(unicode与utf16联系)
    【转】Nginx模块开发入门
    【转】依赖注入那些事儿
    转: OpenResty最佳实践
    转:linux的源码查看, c++语法 查看网站
    【转】所需即所获:像 IDE 一样使用 vim
  • 原文地址:https://www.cnblogs.com/huzi007/p/3885243.html
Copyright © 2020-2023  润新知