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等问题。
    其真正的使用价值,还是要在实际的项目中才能体现出来。


     

  • 相关阅读:
    VB字符串分割为数组,并获取下标值
    VB字符串分割为数组并遍历下标值
    VB去除字符串中的字符.
    VB中case用法
    Win10打开运行的快捷键
    SQL Server新建LinkServer
    SQL Server 存储过程之like赋值
    奋战杭电ACM(DAY5)1007
    ACM必备(学完一个就加亮一个)
    奋战杭电ACM(DAY4)1005
  • 原文地址:https://www.cnblogs.com/BearOcean/p/388690.html
Copyright © 2011-2022 走看看