問題タブ [subject-observer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4132 参照

c# - Implementing Observers and Subjects using IObserver/IObservable

I want to create a class that can be used to represent a dynamically computed value, and another class that represents a value can be the source (subject) for these dynamically computed values. The goal is that when the subject changes, the computed value is updated automatically.

It seems to me that using IObservable/IObserver is the way to go. Unfortunately I can't use the Reactive Extensions library, so I am forced to implement the subject/observer pattern from scratch.

Enough blabla, here are my classes:

My implementation is lifted mostly from: http://msdn.microsoft.com/en-us/library/dd990377.aspx.

So what would the "right" way to do this be? Note: I don't care about LINQ or multi-threading or even performance. I just want it to be simple and easy to understand.

0 投票する
2 に答える
2123 参照

java - 多態的な引数でメソッドをオーバーライドする

私は次のメソッドを持つインターフェース(と呼ばれるSubject)を持っています:

Subject次に、と呼ばれる拡張する別のインターフェイスがありますTimerSubject。このインターフェイスは、のより具体的なバージョンでありSubject、タイミングに使用されます。他にもいくつかの方法があります。

対応する2つのインターフェイス、、、もありObserverますTimerObserverTimerObserver拡張しObserverます。

クラスがを実装するとき、インターフェースからメソッドTimerSubjectをオーバーライドする必要があります。これは次のようになります。addObserver()Subject

TimerObserver問題は、の代わりに受け入れるメソッドが必要Observerなことです。これは次のようになります。

引数はオーバーライドされるメソッドの引数と同じではないため、これは機能しません。

では、ポリモーフィックな引数でメソッドをオーバーライドする方法はありますか?

0 投票する
2 に答える
494 参照

java - Generic Observer - キャストの問題

headFirst Design Patterns の例をモデルにした、一般的なオブザーバー パターンを作成しようとしています。??? でマークされた行でエラーが発生します。下。

エラーメッセージは次のように述べています: サブジェクト型のメソッド registerObserver(Observer) は、引数 (CurrentConditionsDisplay) には適用できません

インターフェース 1

インターフェイス 2

インターフェイス 3

Weatherdata クラス

テスタークラス

0 投票する
3 に答える
42288 参照

java - PublishSubject と BehaviorSubject のサブスクライブを解除するにはどうすればよいですか?

パッケージの下には、次のsubjectsようなクラスがあり、使用可能なサンプルとして説明できると思いPublishSubjectます。BehaviorSubjectObservables

これらのサブスクライブを解除するにはどうすればよいですか? メソッドはなくunsubscribe、呼び出しonCompletedは Observable を完全に終了しますか?

0 投票する
1 に答える
77 参照

c++ - ジェネリック サブジェクト クラス オブザーバー パターン

私は解決するために次の問題を与えています。任意のデータ型 (プリミティブ型またはユーザー型) を受け入れることができるように、ジェネリック サブジェクト クラス (オブザーバー パターンを参照) を作成します。登録、削除、および通知機能もカスタマイズ可能である必要があります。例として、データ型「int」でオブザーバーに通知する WeatherStation クラスがあります。オブザーバーの登録と削除に関する DB エントリを作成します。

もう 1 つの例 (図示されていません) は、証券取引所の相場でオブザーバーに通知する BroadcastHandler です。オブザーバーの登録と削除に関するファイルにエントリを作成します。

それを実装するために次のコードを書きました。

リンカーから次のエラーが表示されます

0 投票する
1 に答える
1383 参照

rx-java - RxJava - すぐに実行される単一の Observable - なぜ?

非常に単純な RXJava エミッターがあります。実際にはpublishSubjectですが、サブスクライブ時に整数を文字列に変換し、後でUI要素を更新するのはその仕事です。コードは次のようになります。

私がしたいこと: サブスクリプションは、integerToStringEmitter.subscribe();を呼び出したときにのみ開始されます。

現在何が起こっていますか: プログラムを起動するとすぐに onNext が呼び出され、UI 要素が #4 に設定されています。なぜですか? このことをもっと制御する必要があるので、サブスクライブしなくてもすぐに実行されません。解決にご協力ください。

0 投票する
1 に答える
95 参照

angular - Subject の onNext が未解決なのはなぜですか?

Angular2 で。件名で onNext を呼び出すと、未解決と表示されます。rx は正しくインポートされます。

0 投票する
1 に答える
577 参照

angular - Angular 2アプリでRxJS .next()がサイレントに失敗する

RxJS の新しいバージョン -> "rxjs": "5.0.0-beta.6" を使用する基本的な angular 2 アプリを作成しようとしています。

私はクックブックの指示に従い、アプリのどの部分でもメッセージを表示するために呼び出すことができる通知サービスを作成しようとしました。

私が抱えている問題は.next()、次の通知を追加するために呼び出すと、これがサブスクリプションによって取得されないことです。へのthis.displayMessage(notification);呼び出し後、回線は実行されませんnewNotification。コードに BehaviourSubject 型を追加したところ (チュートリアルで使用された Subject とは対照的に)、初期値がサブスクリプションによって取得されていることがわかりました。これthis.displayMessage(notification);は初期化時に正常に呼び出されました。NotificationServiceこれは、クラスで . next() を呼び出す方法/場所に関係があると思います。

関連するクラスは次のとおりです。

通知サービス:

メッセージコンポーネント:

誰かが試してみるべき他のことについて何かアイデアを持っているなら、それは素晴らしいことです. どうもありがとう

編集:ここの完全なレポ: https://github.com/sandwichsudo/sentry-material/tree/notifications/src/app