Bir Person sınıfı yapalım ve değerler değiştiği zaman bildirim yapsın.
import java.util.Observable;
public class Person extends Observable {
private String name;
private String surname;
public Person(String name, String surname) {
this.name=name;
this.surname=surname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
setChanged();
notifyObservers("surname");
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
setChanged();
notifyObservers("name");
}
}
Person sınıfı Observable sınıfından türetilmiştir. Bu bildirim yapabileceği anlamına gelmektedir. setName ve setSurname çağrıldığında setChanged ile değişiklik yapıldığı bildirilir. notifyObservers ile de dinleyen sınıfların metotları çağrılacaktır.
Değişiklikleri dinleyen sınıf yapalım :
import java.util.Observable;
import java.util.Observer;
public class PersonObserver implements Observer{
@Override
public void update(Observable o, Object arg) {
System.out.println("updated..");
if(o instanceof Person){
Person p=(Person)o;
System.out.println("arg:"+arg+" - "+ p.getName() + " " + p.getSurname());
}
}
public static void main(String[] args) {
Person p=new Person("Katip", "Çelebi");
PersonObserver personObserver=new PersonObserver();
p.addObserver(personObserver);
p.setName("Evliya");
}
}
PersonObserver , bir sınıfı dinleyebilmesi için Observer interface'sini implement etmesi gerekir. update(Observable o, Object arg) metodu doldurulmuştur. Test amacıyla main yapıp gerekli kod yazılmıştır. Uygulama çalıştırıldığında aşağıdaki gibi çıktı gözükecektir :
updated..
arg:surname - Evliya Çelebi
Önce Person sonra da PersonObserver sınıfı yaratılmıştır. Person sınıfına dinleyici olarak personObserver nesnesi verilmiştir. Person nesnesinin adı değiştirildiği an update metodu çağrılacaktır.