圖案

2011-05-25 19 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