オブザーバーパターンのJava組み込み実装があなたのケースに適していないと思います。
実際、観察可能な種類のイベントが1つしか発生しない場合は、一般的なオブザーバパターンを使用できます。オブザーバーデザインパターンでは、すべてオブザーブズはを常にに通知します。
ので、この場合には、あなたは、たとえば、あなた自身の観察可能なインタフェースを定義することにより、このように一般的なObserverパターンを拡張する必要があります。
public enum EventKind {
EVENT_A, EVENT_B, EVENT_C;
}
public interface Observable {
public void registerObserver(EventKind eventKind);
public void unregisterObserver(EventKind eventKind);
public void notifyObservers(EventKind eventKind);
}
次に、あなただけでこの観察可能なインタフェースを実装することができます通知するイベントの種類ごとの内部リスト。必要に応じて、Java組み込みのObserverインターフェースを引き続き使用できます。
このアプローチには、次の利点があります。
- あなたは柔軟 オブザーバーのコードに影響を与えることなく、イベント のより多くの種類を追加することができます。
- イベントにオブザーバーを登録することができます。
- あなたは で効果的に興味を持って各イベントですだけオブザーバー を更新します。
- Observers側では、「空のメソッド」、「イベントタイプのチェック」、その他 のトリックは避けてください。
あなたがObservableを実装しているとします。独自のObservableインターフェースを実装しているのか、java.util.Observableから拡張していますか? – peshkira
あなたが直面している問題はまさに何ですか? – Bohemian
私はjava.util.Observableを実装しています。 –