問題タブ [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.
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.
java - 多態的な引数でメソッドをオーバーライドする
私は次のメソッドを持つインターフェース(と呼ばれるSubject
)を持っています:
Subject
次に、と呼ばれる拡張する別のインターフェイスがありますTimerSubject
。このインターフェイスは、のより具体的なバージョンでありSubject
、タイミングに使用されます。他にもいくつかの方法があります。
対応する2つのインターフェイス、、、もありObserver
ますTimerObserver
。TimerObserver
拡張しObserver
ます。
クラスがを実装するとき、インターフェースからメソッドTimerSubject
をオーバーライドする必要があります。これは次のようになります。addObserver()
Subject
TimerObserver
問題は、の代わりに受け入れるメソッドが必要Observer
なことです。これは次のようになります。
引数はオーバーライドされるメソッドの引数と同じではないため、これは機能しません。
では、ポリモーフィックな引数でメソッドをオーバーライドする方法はありますか?
java - Generic Observer - キャストの問題
headFirst Design Patterns の例をモデルにした、一般的なオブザーバー パターンを作成しようとしています。??? でマークされた行でエラーが発生します。下。
エラーメッセージは次のように述べています: サブジェクト型のメソッド registerObserver(Observer) は、引数 (CurrentConditionsDisplay) には適用できません
インターフェース 1
インターフェイス 2
インターフェイス 3
Weatherdata クラス
テスタークラス
java - PublishSubject と BehaviorSubject のサブスクライブを解除するにはどうすればよいですか?
パッケージの下には、次のsubjects
ようなクラスがあり、使用可能なサンプルとして説明できると思いPublishSubject
ます。BehaviorSubject
Observables
これらのサブスクライブを解除するにはどうすればよいですか? メソッドはなくunsubscribe
、呼び出しonCompleted
は Observable を完全に終了しますか?
c++ - ジェネリック サブジェクト クラス オブザーバー パターン
私は解決するために次の問題を与えています。任意のデータ型 (プリミティブ型またはユーザー型) を受け入れることができるように、ジェネリック サブジェクト クラス (オブザーバー パターンを参照) を作成します。登録、削除、および通知機能もカスタマイズ可能である必要があります。例として、データ型「int」でオブザーバーに通知する WeatherStation クラスがあります。オブザーバーの登録と削除に関する DB エントリを作成します。
もう 1 つの例 (図示されていません) は、証券取引所の相場でオブザーバーに通知する BroadcastHandler です。オブザーバーの登録と削除に関するファイルにエントリを作成します。
それを実装するために次のコードを書きました。
リンカーから次のエラーが表示されます
rx-java - RxJava - すぐに実行される単一の Observable - なぜ?
非常に単純な RXJava エミッターがあります。実際にはpublishSubjectですが、サブスクライブ時に整数を文字列に変換し、後でUI要素を更新するのはその仕事です。コードは次のようになります。
私がしたいこと: サブスクリプションは、integerToStringEmitter.subscribe();を呼び出したときにのみ開始されます。
現在何が起こっていますか: プログラムを起動するとすぐに onNext が呼び出され、UI 要素が #4 に設定されています。なぜですか? このことをもっと制御する必要があるので、サブスクライブしなくてもすぐに実行されません。解決にご協力ください。
angular - Subject の onNext が未解決なのはなぜですか?
Angular2 で。件名で onNext を呼び出すと、未解決と表示されます。rx は正しくインポートされます。
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