71

最近リアクティブプログラミングという言葉をよく耳にしますが、調べてみるとオブザーバーパターンとの類似点ばかりでした。実際、私はそれらの間に違いを見つけることができません。それらの概念的な違いは何ですか?また、リアクティブ プログラミングという用語が話題になっているのはなぜですか?

4

2 に答える 2

66

リアクティブ プログラミングは、プログラムの実行を通じてデータ ストリームの変更を簡単に伝達するための一般的なパラダイムです。それ自体は特定のパターンやエンティティではなく、アイデア、またはプログラミングのスタイル (オブジェクト指向プログラミング、関数型プログラミングなど) です。大まかに言えば、xある場所で変更または更新されると、の値に依存し、xイベントが発生するのを待っているだけでスレッドを拘束することなく、他のさまざまな場所でノンブロッキング方式で再計算および更新されます。

x伝統的に、GUI イベントである上記のパターンをほぼ常に見てきました。ほとんどの GUI ライブラリはシングル スレッドであるため、応答を待っているこの 1 つのスレッドを拘束することはできません。そこでオブザーバー パターンの出番です。これは、そのような変更が行われるたびに (または、より一般的な OO 用語では、「イベント」が発生したときに) 情報を更新できるようにするための「トリガー」を提供するための一般的な方法を提供します。その意味で、リアクティブ プログラミングの非常に基本的な概念を OO (および場合によっては他の) スタイル言語で実行できるようにするための単純なメカニズムを提供します。

リアクティブ プログラミングのより完全な概念は、従来のオブザーバー パターンをはるかに超えています。単一のイベント (ユーザー クリックなど) で特定のアクションを起動するだけでなく、そのようなイベントのパブリッシャーを作成してサブスクライブし、実行するアクションを設定できます。そのパブリッシャーで発生するイベントに基づいて、バックプレッシャーを適用してそのパブリッシャーの速度を制御したり、そのストリームのスレッドを制御したりします。

于 2013-05-20T15:29:42.550 に答える