zoukankan      html  css  js  c++  java
  • Command 模式

      Command 模式

    大多数类都是一组方法和相应的一组变量的结合。而Command 仅仅由一个具有唯一方法的接口组成。简单的几乎可笑。所以有人说该模式具有功能分解的意味,根本是对面向对象的亵渎。

    Public interface Command             

    {

     public void do();

    }

     

    就是这样形成了最简单的Command模式,具体的命令实现了Command接口的Do方法。
    所以Command的拥有者不需要知道Comman具体干了什么,只需要调用与之绑定的
    Command.do方法就可以了。

     已一个模拟实现门开关,和敲击的程序为例,就可以运用Command模式。



     

    可以这样阐述这个问题,程序创建一个DoorUI的实例。该实例可以假象成一个WebForm或则WinForm 他能接受用户的输入。

    他能够探知用户是在开门,还是关门,还是敲门。甚至是其他操作。
    当他接收到用户的输入。便生成一个Command实例。例如有人试图开门:
    Command Cmd =new OpenCommand();
    然后DoorUI触发一个事件表示接收到了一个用户命令,并且将该命令传输给Application

    EventGetCommand (aCmd);
    当Application收到该事件以后,直接调用Cmd.do()方法便可。
    ADoor.Cmd =aCmd;
    ADoor.Cmd.do();
    这个是最简单的例子。目前我对Command的理解也限制于这个层面。当我们需要添加一个按门铃的操作时 只需要编写一个实现Command接口的新类:RingCommand就可以了。
    除此以外,Command模式也可以很好的解决事务操作以及Do和UnDo等问题。
    其真正的使用价值,还是要在实际的项目中才能体现出来。


     

  • 相关阅读:
    程序员第一定律:关于技能与收入
    JS注册/移除事件处理程序
    关于程序猿,你不知道的15件事
    .NET后台输出js脚本的方法
    新项目经理必读:分析什么是项目经理
    项目如何开始:怎样和客户一起搞定需求
    【转】为什么程序员讨厌修改静态检查问题
    js的with语句使用方法
    软件版本号 详解
    PHP记忆碎片2投票汇总
  • 原文地址:https://www.cnblogs.com/BearOcean/p/388690.html
Copyright © 2011-2022 走看看