Uml diagramın daha büyük resmi:http://prntscr.com/akm0
Takip ve haber vermede kullanılır.Nesnenin durumunda bir değişiklik olunca bizi haberdar eder.Bir çok uygulama bunu kullanır.Mesela olay algılıyıcıları button tıklandığındığında gerçekleşecek olay gibi.Sürekli bir nesneyi dinlemek yerine nesnenin durumunda bir değişilik olduğunda bize bildirmesini daha iyidir.Eğer sürekli bir nesneyi dinleme alırsak mesela her sn başı buttonun tıklanıp tıklanmadığını kontrol etmek yerine button tıklandığında bize haber vermesini isteriz.Bize haber vermesinden kasıt buttonun içine button tıklandığında gerçekleştirmek istediğimiz kodu yazarız.Ya da bu örnekte olduğu gibi bir topluluk var ve arada bir bütün üyelere mail atılır.Her sefer üyelerin gidip grubu kontrol etmesine gerek yok.Gruba mail atıldığında otomatik olarak grup üyelerine de gelir mesajlar.Başka örnek bir dergiye aboneyiz her hafta telefon açıp derginiz çıktı mı acaba demek yerine dergi çıktığında onların bizi arayıp derginiz hazır buyrun alabilirsiniz şeklinde bir çok uygulama da kullanılır.Java da bu şablon için sınıf ve arayüz vardır.
package www.ethemsulan.com;import java.util.Observable;import javax.swing.JOptionPane;public class OlayKaynagi extends Observable{public void uyelerDinlemede() {boolean kontrol=true;String mesajYolla;while (kontrol) {mesajYolla=JOptionPane.showInputDialog("Mesaj yaz");if("".equals(mesajYolla) || mesajYolla==null){kontrol=false;}else{setChanged();notifyObservers(mesajYolla);}}}}package www.ethemsulan.com;import java.util.Observable;import java.util.Observer;public class GercekOlayYonet implements Observer {private String girilenDeger;public void update(Observable arg0, Object arg1) {if(arg1 instanceof String){girilenDeger=(String)arg1;System.out.println("Topluluk uyelerine " +"mail gonderildi:"+girilenDeger);}}}package www.ethemsulan.com;public class TestSinifi {public static void main(String[] args) {OlayKaynagi kaynak=new OlayKaynagi();GercekOlayYonet olay=new GercekOlayYonet();kaynak.addObserver(olay);kaynak.uyelerDinlemede();}}