1. ホーム
  2. model-view-controller

[解決済み] オブザーバー、Pub/Sub、データバインディングの違いについて

2022-04-21 16:11:28

質問

の違いは何ですか? Observerパターン , 出版/購読 および データバインディング ?

Stack Overflowで少し検索してみましたが、良い回答は見つかりませんでした。

私が思うに、データバインディングは総称であり、ObserverパターンやPub/Subパターンなど、さまざまな実装方法があるのだと思います。Observerパターンでは、ObservableはそのObserversを更新します。 Pub/Subでは、0-manyのpublisherが特定のクラスのメッセージを発行し、0-manyのsubscriberが特定のクラスのメッセージをsubscribeすることができます。

データバインディングを実装するための他のパターンはありますか?

どのように解決するのですか?

この3つについて、私の考えを述べます。

データバインディング

基本的に、これは単に「オブジェクトY上のプロパティXの値は、オブジェクトB上のプロパティAの値に意味的に結合されている」という意味です。

オブザーバー、またはオブザーバブル/オブザーバー

オブジェクトに特定のイベントを他者に通知する機能を持たせるデザインパターン。通常、実際のイベントを使って行われ、特定の関数/メソッドの形をしたオブジェクトのスロットのようなものである。observableは通知を提供するもので、observerはそれらの通知を受け取ります。.netでは、observableはイベントを公開することができ、observerはそのイベントを"イベントハンドラ"の形のフックで購読します。通知が発生する特定のメカニズムや、1つのobservableが通知できるobserverの数については仮定されていません。

パブ/サブ

Observable/Observerパターンの別の名前(おそらくより多くのquot;broadcast"セマンティクスを持つ)、これは通常より多くのquot;dynamic"を意味します - observersは通知を購読または購読解除でき、一つのobservableは複数のobserverにquot;shout out" できるようにします。.NETでは、標準のイベントを使用することができます。イベントはMulticastDelegateの一種であり、複数の購読者へのイベントの配信をサポートし、購読の解除もサポートするからです。Pub/Subは、ある文脈では少し異なる意味を持ち、通常はイベントとイベンターの間でより多くのquot;anonymity"を含み、任意の数の抽象化によって促進することができます。

データバインディング、Redux

多くの MVC ライクなパターンでは、observable は何らかの方法でプロパティ変更通知を公開し、変更された特定のプロパティに関する情報も含んでいます。オブザーバーは暗黙的で、通常はフレームワークによって作成され、オブジェクトとプロパティを明確に識別するためのバインディング構文によってこれらの通知を購読し、quotイベントハンドラは単に新しい値をコピーし、更新またはリフレッシュロジックをトリガーする可能性があります。

データバインディング re Redux

データバインディングの代替実装?OK、これはバカなやつだ。

  • オブジェクトのバインドされたプロパティを常にチェックするバックグラウンドスレッドが起動されます。
  • そのスレッドが前回のチェック以降にプロパティの値が変更されたことを検出した場合、その値をバインドされたアイテムにコピーします。