JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Design  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 請問Strategy與Command有分別嗎?
kitsam





發文: 76
積分: 0
於 2006-07-06 23:20 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
大家好,小弟對於Strategy與Command很難分辨,我老是覺得兩者是相同的。
例如Command模式是為每一種 '動作' 建立一個類別並實作執行的內容,然後交由Invoker執行,Invoker不需知道是什麼物件,只需知道它實作了ActionListener,調用actionPerformed就行了。
而Strategy模式是為每一種 '策略' 建立一個類別並實作執行的內容,然後由另一個類物負責執行。

我覺得Command模式中的 '動作' 與 Strategy模式中的 '策略' 是相同的,請問兩個Design Pattern有什麼分別?? 以及有甚麼場合是需要特定使用Command或Strategy?

謝謝大家。


reply to postreply to post
作者 Re:請問Strategy與Command有分別嗎? [Re:kitsam]
try





發文: 128
積分: 6
於 2006-10-02 14:17 user profilesend a private message to usersend email to tryreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
hi,

我覺得看Patterns的運作除了從靜態觀點(Class Diagram)來描述之外,也要從動態觀點(Sequence Diagram)看各類別的互動比較完整。

就靜態觀點來看,Template Method, Observer, Command與Strategy靜態結構都很類似,建議您比較一下其Sequence Diagram會比較容易發現不同的地方。例如:由誰來create Concrete Command/Concrete Strategy, 執行的call sequence,執行execute後有那些類別受影響、受什麼影響等等。

另外就語意觀點來看也可以區分Strategy與Command的不同。Strategy是Template Method加上Delegate進化而來,所以在Context(Strategy Container)中一般會有一個演算法或計算過程(如sort),將特定的功能抽出來(如sort的方式)才成為Strategy.反觀Command的Container是Invoker,一般只執行類似包覆或轉交的動作。




FYI.

-try


try edited on 2006-10-02 14:23
reply to postreply to post
個人網站 - http://cfliao.net/
» JWorld@TW »  Software Design

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8