图案

2011-05-25 43 views
0

定义:图案

封装所述请求作为对象。

假设有其控制不同的器具,如电视,冰箱的遥控....

要处理该请求,以开启/关闭电视机,则创建一个命令对象。

public class TVOffCommand : Command 
{ 
    TV tv; 

    public TVOffCommand (TV aTV) 
    { 
     this.tv= aTv; 
    } 

    #region Command Members 

    public object Execute() 
    { 
     return tv.Off(); 
    } 

    #endregion 
} 

有人可以用这个例子来解释什么是消息封装作为一个对象的手段。

回答

1

您的留言/对象是“tv.Off”。

命令模式的完整定义:

封装的请求为对象,从而让你参数客户不同的要求,队列或日志请求,并支持可撤销的操作。

它的三个部件,

  1. 命令(方法调用) - 它是用于做一些操作/事物(通常其像执行/撤消)
  2. 接收机的接口 - 所接受的命令并执行一些
  3. 客户端 - 执行命令

总的想法是,该命令是封装方法为对象,允许我们执行/队列方法,而不真正知道发生了什么。


您的示例(伪世界):

tv = TV() 
remote = Remote() //your client 
command = TVOffCommand(tv); 
remote.command(command); 

您的遥控器不知道电视存在,或任何事情,它只是调用你的命令对象的接口/方法。

+0

这里的消息是tv.off,对象意味着命令对象(Tvcommand),那么作为对象的消息封装是什么意思? – Racs 2011-05-25 13:55:25

+0

正是我所说的,人们可以在不知道有计算器参与的情况下执行TVOffCommand,并且我们需要调用calculator.off。 – Nix 2011-05-25 13:56:36

2

只要将Command对象视为包含关闭电视命令的信件(tv.Off())即可。您可以在任何地方发送信件(对象),并且收件人可以随时打开它(请致电Execute)。

另一方面,你可能已经过去了收件人,并告诉他直接关掉电视。通过将它写入您发给他的信中,您有包装命令

+0

作为一个对象意味着消息的封装,这里对象意味着命令对象和消息意味着命令(tv.off()) – Racs 2011-05-25 13:47:40

+0

@ Raghu55:我不知道我是否正确理解你。 – 2011-05-25 13:53:30