私はオブザーバーのパターンについてできる限り多くを読んだことがありますが、それはいつ/いつ使われるのかを完全に理解できていません。誰も私にこれを説明することはできますか?オブザーバーのパターンを理解するのに苦労します
答えて
、パブリッシャ/サブスクライバモデルのように考えてください。在庫オブジェクト(対象)の価格が更新されると
の例では、株式市場は、
、この株式に加入している任意の「投資家」(オブザーバー)が更新価格
オブザーバーは、変更されたときにコードの異種コンポーネントに通知する場合に使用します。イベントベースのシステムが思い浮かぶ。通常、イベントベースのシステムでは、ハンドラを登録するときに、どのようなフレームワークを使用しても、オブザーバ実装を使用して、イベントが発生したときにハンドラに通知します。
私が使用した領域は、Sproutcoreフレームワークにあります。フレームワークには、「キーバリュー観測」という機能があります。基本的に、オブジェクトのフィールドにオブザーバーを設定することができます。フィールド値が変更されると、オブザーバーは自動的に起動します。これは、たとえば、ビュー要素が親ビューのレイアウト上にオブザーバを持つ場合、ビューの要素のサイズが変更されると、ビュー自体が再描画されるためです。または、値が変更され、他の値を再計算する必要がある場合は、オブザーバを初期値に設定し、オブザーバから再計算を実行できます。 オブジェクトが変化した場合、他のオブジェクト(複数可) に通知する必要があるとき
Observer patternを見るが使用されます。 。だから、オブザーバーパターン は
です)1)件名または出典: アクションが発生します。
2)1人以上のオブザーバー: は、変更があった場合に通知する必要があります が発生しました。
ここでは、この上の素晴らしい記事です:
が通知されることになるIあなたがソケットからデータを受け取り、データが到着するたびに通知を受けたいとしましょう。したがって、データを受け取っているクラスにオブザーバーを登録します。データが来たら、オブザーバーの特定のメソッドが呼び出され、データを処理する適切なアクションを実行できます。
オブザーバーパターンは、多くのオブザーバーがあるオブジェクトの状態変化を知る必要がある場合に使用されます。これは、たとえば、GUIの中で、他のコンポーネントが変更されたときにいくつかのコンポーネントを "自動的に"変更する場合に使用できます。
したがって、チェックボックスがあり、他のコンポーネントを表示するかどうかの状態(チェックされているかチェックされていないか)によっては、他の構成要素の数は可変であってもよい。だからあなたはチェックボックスを使ってそれらのすべてを自分自身に登録してほしい。チェックボックスは、ユーザーがクリックしたときに変更が発生したことを各オブザーバに通知し、その変更にどのように対処するかを決定することができます。彼らがどのように反応するかという論理は、オブザーバーにあります。チェックボックスは、自分が何をしているのかを知る必要はありません。
- 1. ファイルポインタを理解するのに苦労していますか?
- 2. Equals()を理解するのに苦労します
- 3. laravelでリダイレクト/ルーティングを理解するのが苦労します
- 4. Datetimepicker - コードを理解するのに苦労している
- 5. JavaScriptがレキシカルスコープを理解するのに苦労している
- 6. nubByの使い方を理解するのに苦労しています
- 7. 図グループの等価を理解するのに苦労しています
- 8. Agdaのコイン導出を理解するのに苦労します
- 9. 再帰を理解するのが苦労
- 10. Javaファイルのワークフローを理解するのに苦労している
- 11. 私は、次のコードの出力を理解するのに苦労し
- 12. 再帰関数は、理由を理解するのに苦労して和を返します。
- 13. 私のmySQLクエリのエラーを修正する方法を理解するのに苦労しています
- 14. このエラーの解決方法を特定するのに苦労します
- 15. モデルとアソシエーションをレールに保存する方法を理解するのに苦労しています
- 16. long型の1つのパラメータを持つRandomクラスのコンストラクタを理解するのに苦労します
- 17. PHPからJSONデータを解釈するのに苦労しています
- 18. 苦労
- 19. 苦労
- 20. 苦労
- 21. 苦労
- 22. 苦労
- 23. 苦労
- 24. 苦労
- 25. PHPエクステンションに苦労しています
- 26. NHibernateとの関係をマップするのに苦労します
- 27. バックエンドがフロントエンドとどのように連携するかを理解するのが苦労している
- 28. PyQt4用SIPを構築するのに苦労します
- 29. 3dアレイを印刷するのに苦労します
- 30. Android - アカウントピッカーのスタイルに苦労
イベントリスナーに似ていますか? – Prisoner
@nathan、正しい。通常、イベントベースのシステムでは、ハンドラを登録するときに、どのようなフレームワークを使用しても、オブザーバ実装を使用して、イベントが発生したときにハンドラに通知します。 – hvgotcodes