2017-12-03 19 views
-1

なぜObserverインターフェイスにはがありますか?Observable oをパラメータとして使用しますか? Javasの既存のクラス(Observer、Observableを実装する)を使用することをお勧めしますか?オブザーバパターン更新パラメータ

public class Test implements Observer { 
    void update(Observable o, Object arg); 
    } 

答えて

0

このパターンを使用する場合は、ObserverとObservablesの両方が必要です。


public class Airport extends Observable { 

    private final String name; 

    public Airport(String name) { 
     this.name = name; 
    } 

    public void planeLanded(String flight) { 
     setChanged(); 
     notifyObservers(flight); 
    } 

    @Override 
    public String toString() { 
     return name; 
    } 
} 

public class DispatcherScreen implements Observer { 

    @Override 
    public void update(Observable o, Object arg) { 
     System.out.println("Flight " + arg + " landed at " + o.toString()); 
    } 

} 

public class Program { 

    public static void main(String[] args) { 
     Observer screen = new DispatcherScreen(); 

     Airport airport1 = new Airport("San Francisco International Airport"); 
     Airport airport2 = new Airport("O'Hare International Airport"); 
     airport1.addObserver(screen); 
     airport2.addObserver(screen); 
     // 
     airport1.planeLanded("FR1154"); 
     airport1.planeLanded("UI678"); 
     airport2.planeLanded("SU1987"); 
     airport1.planeLanded("UI678"); 
     airport2.planeLanded("AI4647"); 
    } 

} 
+1

をオブザーバーと観察可能にjava9に廃止されました。あなたはそれらを使用すべきではありません。パターンを研究するためにそれらを使用してください。 – wleao

1

Observerはそれが渡されたObject引数を処理する方法に対処するためにそれを使用できるように、それはObservable参照を受け取ります。また、ObserverdeleteObserverに電話をかけてジョブを終了した後に自分自身を削除することができます。

これらは使用しないでください。そしてそれは私にあなたに言っているのではなく、それはJava自身の背後にある人々です。それをチェックアウト:

ジャワ9、Observerhttps://dzone.com/articles/javas-observer-and-observable-are-deprecated-in-jd https://docs.oracle.com/javase/9/docs/api/java/util/Observable.html

Observableが廃止されました。

廃止予定。このクラスおよびObserverインターフェイスは、 が推奨されていません。 ObservableとObservableでサポートされているイベントモデルは であり、Observableによって配信される通知の順序は未定義で、 は未指定であり、状態の変更は通知付きの1対1対応ではありません。豊富なイベントモデルの場合は、 java.beansパッケージの使用を検討してください。スレッド間の信頼性の高い順序付けされたメッセージングのために、 は、 java.util.concurrentパッケージ内の同時データ構造の1つの使用を検討します。リアクティブストリームスタイルのプログラミングの場合は、 フローAPIを参照してください。

この他の答えチェックアウト: How observers subscribe on observables?

+0

問題の解決に役立つ場合は、([回答を受け入れる])(http://meta.stackexchange.com/a/5235/155831)ください。 –

関連する問題