すべてが問題になっています。なぜメニューはオブザーバーパターンではなくコマンドデザインパターンで一般的に実装されているのでしょうか。
2 に答える
「ディスパッチ」という 2 つの側面があり、メニューからオプションを選択するか、ボタンをクリックしてコードを実行します。次に、実行される実際のコードがあります。
あなたがどのUIフレームワークを参照しているのかわかりませんが、どちらの場合もオブザーバーとコマンドの両方のパターンが使用されることを期待しています. Menu のケースと Button のケースがフレームワークによって実装されているだけで、さまざまな側面が見えるようになっているのではないでしょうか。
したがって、メニューの場合、さまざまなコマンド オブジェクトを提供します。コマンドを呼び出す内部ディスパッチを実際に確認することはありません。私の推測では、何らかのイベント処理が行われているに違いないため、Observer パターンが使用されている可能性があります。
ボタンの場合、呼び出されるコードはコマンド オブジェクトと考えることができますが、より明示的にイベントに結び付けるので、最初に Observer パターンが表示されます。
メニュー項目またはボタンでオブザーバー パターンを使用するユース ケースが 1 つあります。星占い計算機があるとします。ユーザーには、星占いの生成を開始するためのボタンがあります。ユーザーはボタンをクリックし、計算のためにサーバーにコマンドを発行します。後で同じボタンでサーバーのステータスを監視したり、その逆でステータスの更新を確認したり、印刷を表示したり、ボタンから印刷コマンドを実行したりできます。したがって、 Observer : イベントをディスパッチする必要があります。コマンド: 実行されるアクション。