オブザーバに複数のタイプのイベントを通知する必要があるオブザーバブルのupdate()コールを解釈する際に起こる醜い条件付きキャスティングを回避しようとしています。また、notifyObservers()/ update()メソッドにフラグを渡さないことをお勧めします。私はオブザーバーが変わったのかを調べるために観察可能なオブジェクトをポーリングする必要がありますする必要はありません1つのオブザーバブルに対して複数の観測可能なイベント
、私は、この新しいデータは、update()メソッドを経由して観測者に与えられるしたい(または同様。)
私は解決策を考えています。私は通知の種類ごとに1つの観察可能なオブジェクトをインスタンス化します。観察可能なハードウェアデバイスを表すオブジェクトである、それはその状態を表す観測含まれています:例えばこの方法で
public final Observable connectionState = new Observable();
public final Observable dataState = new Observable();
を、オブザーバーは1人のオブザーバーとして、クエリや条件鋳造の任意の並べ替えをする必要はありません、つまり、通知タイプごとに1つのオーバーライドされたupdate()メソッドを使用できます。
これは私が考えることができる最もエレガントな解決策ですが、Observers/Observablesを正しく使用する方法についてのポイントを忘れてしまったというこの恐ろしい感情があります。その解決策と
私の主な問題点は以下のとおりです。
- は、それはまだ観測が観察する必要があるため、彼らは公共のメンバーでなければなりません(少なくとも、それは条件付きではありません)
- キャストを必要とします。オブザーバーはaddObservable()を呼び出すことができますが、notifyObservers()も呼び出すことができます。
私は正しいことをしていますか?
おかげ