25 Eylül 2017 Pazartesi

Observable Sınıfı

Giriş
Observable sınıfı ve Observer arayüzü beraber kullanlır. Observable sınıfı arayüz olmadığı için nesnemizi bir kere kalıtınca başka bir sınıftan kalıtma imkanı ortadan kalkıyor.

Serializable
Bu sınıfı Serializable değil !

Java 9
Bu sınıf Java 9 ile deprecate edildi. Açıklaması şöyle
The event model supported by Observer and Observable is quite limited, the order of notifications delivered by Observable is unspecified, and state changes are not in one-for-one correspondence with notifications. For a richer event model, consider using the java.beans package. For reliable and ordered messaging among threads, consider using one of the concurrent data structures in the  java.util.concurrent package. For reactive streams style programming, see the Flow API.
java.beans paketindeki PropertyChangeEvent ve PropertyChangeListener kullanılablir.

addObserver metodu
Şöyle yaparız.
public class SomeView implements Observer{

 private MyObservable controller;

 public SomeView (MyObservable ctrl)
 {
   this.controller= ctrl;
   ctrl.addObserver(this);
 }

 public void update (Observable o,Object arg)
 {
   if (o==controller)
   System.out.println("Update detected");
  }

}
notifyObservers metodu
Şöyle yaparız.
public class MyObservable extends Observable{

  public void doSomething()
  {
    //dostuff
    setChanged();
    notifyObservers();
  }

}

Hiç yorum yok:

Yorum Gönder