Bu Sayfayı Paylaş:

Kavram

Observer

Tanım: Bir nesnede değişiklik olduğu zaman bildirim alınması (notify) için implement edilmesi gereken interface. Dinlenmek istenilen nesnede değişiklik olduğunda Observer'ı implement etmiş sınıfın update(Observable o, Object arg) metodu çağrılacaktır.

Kavram

Observable

Tanım: Bir sınıfta değişiklik olduğu zaman Observer sınıflarına bildirim (notify) yapmak için extend edilmesi gereken sınıf. setChanged() ve notifyObservers() metodu çağrıldığı zaman kendisini dinleyen sınıfların update(Observable o, Object arg) metodları çağrılacaktır.

Örnek

Basit Bir Observer Örneği

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.



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir