2011-07-25 38 views
0

所有問題,爲什麼菜單通常使用Command Design Pattern而不是Observer模式來實現?觀察者和命令設計模式,爲什麼菜單通常使用命令模式?

+0

一個原因我可以馬上看到的是「撤消」動作的能力。 http://en.wikipedia.org/wiki/Command_pattern – davecoulter

+0

你怎麼看,它可以用觀察者模式實現? – sudmong

+0

事實上按鈕通常使用觀察者模式,所以,如果我扭轉這個問題:爲什麼Button使用Observer而不是Command模式?那麼,爲什麼有一些使用Observer模式和其他命令模式的小部件? –

回答

1

有兩個方面,「調度」,選項從菜單中選擇或點擊按鈕和一些代碼運行。然後是運行的實際代碼。

我不知道你指的是哪個UI框架,但我希望看到在兩種情況下使用這兩種觀測和指揮patters。我想知道是否發生了什麼事情,菜單案例和Button案例只是由您的框架以不同方面可見的方式實現。

所以對於菜單,你提供不同的命令對象,你從來沒有真正看到導致調用你的命令的內部調度。我的猜測是在一些事件處理必須發生的情況下,所以觀察者模式可能正在使用,只是你沒有看到它。

在按鍵的情況下其所調用可以被認爲是一個命令對象,但我們更明確其導線的事件,所以我們首先看到了觀察者模式的代碼。

0

我可以看到使用觀察者模式與菜單項或按鈕一個用例。假設有星座計算器。用戶有一個按鈕來啓動星座生成。用戶將點擊按鈕併發出命令給服務器進行計算。後來,相同的按鈕可以觀察服務器狀態,反之亦然可以進行狀態更新,或顯示打印以及按鈕的火災打印命令。所以觀察者:事件需要派遣。 命令:執行的操作。