2011-07-25 3 views
0

メニューは一般にObserverパターンではなくCommand Design Patternで実装されるのはなぜですか?オブザーバとコマンドのデザインパターン、なぜメニューは一般的にコマンドパターンを使用していますか?

+0

私がすぐに見ることができる1つの理由は、アクションを「元に戻す」ことができることです。 http://en.wikipedia.org/wiki/Command_pattern – davecoulter

+0

あなたはどのようにオブザーバーパターンを使って実装できると思いますか? – sudmong

+0

実際にボタンはオブザーバーパターンを一般的に使用しています。そのため、私は質問を逆にすると、ボタンがオブザーバーを使用し、コマンドパターンを使用しないのはなぜですか?だから、Observerパターンや他のコマンドパターンを使用するウィジェットがある理由は? –

答えて

1

「ディスパッチング」という2つの側面があります。メニューからオプションを選択するか、ボタンをクリックしてコードを実行します。次に、実行されている実際のコードがあります。

どのUIフレームワークを参照しているのかわかりませんが、ObserverとCommandの両方のパターンが使用されています。何が起こっているのかは、MenuのケースとButtonのケースが、あなたのフレームワークによって実装されているだけで、さまざまな側面を見えるようにしているのだろうかと思います。

メニューでは異なるコマンドオブジェクトを提供しますが、コマンドを呼び出す内部ディスパッチは実際には見られません。私の推測はカバーの下にあります。イベント処理が行われている必要がありますので、オブザーバーパターンが使用中である可能性があります。それは見えません。

ボタン・ケースでは、呼び出されるコードはコマンド・オブジェクトと考えることができますが、より明確にイベントに配線するので、Observerパターンが最初に表示されます。

0

メニュー項目またはボタンでオブザーバーパターンを使用するためのユースケースを1つ見ることができます。星占い計算機があると仮定します。ユーザーは星占い生成を開始するボタンを持っています。ユーザーは計算のためにサーバーに発行されたボタンとコマンドをクリックします。後で同じボタンがサーバの状態を観察することができ、その逆もまた同様であり、状態の更新や、ボタンからの印刷および火災印刷コマンドの表示が可能である。 オブザーバー:イベントをディスパッチする必要があります。 コマンド:実行されたアクション。

関連する問題