Studi kasusnya saya mengambil contoh pada aplikasi chatting, dimana user bisa ikut bergabung dan menerima pesan-pesan yang dikirimkan oleh ser lainnya. Kita memerlukan 2 buah interface, dimana kedua interface ini akan dipantau oleh class-class yang memanfaatkannya. function onChanged() pada interface ObserverSender berfungsi untuk mengirim nama user yang ingin bergabung. Dan function tambah_user() pada interface ObservableSubject berfungsi untuk menambahkan nama user yang telah dikirimkan.
Sekarang kita buat buah class yang akan mengimplementasikan kedua interface di atas. Class DaftarChat dan class LogChat, yang filenya saya pisah saja agar mudah maintenancenya ;).
DaftarChat.php
daftar_user[]= $user; } public function tambah_log_user($name) { foreach( $this->daftar_user as $user ) { $user->onChanged( $this, $name ); } } } ?>LogChat.php
".$nama."masuk ke room chat
" ); } } ?> Ketika ada user baru yang terdaftar, maka pertama-tama user didaftarkan ke dalam sebuah array. Kemudian array tersebut ditampilkan ke dalam sebuah log chat dari class LogChat.
Setelah itu, kita jalankan dalam sebuah file baru dengan memanggil interface dan kedua class di atas terlebih dahulu.
tambah_user(new LogChat()); $ul->tambah_log_user( "Dery" ); $ul->tambah_log_user( "Hwongg" ); $ul->tambah_log_user( "Sumi" ); $ul->tambah_log_user( "Yati" ); ?>Contoh di atas masih bisa ditambahkan fungsi untuk berhenti atau keluar dari room chat. Mirip dengan fungsi berhenti berlangganan yan sering kita lihat di Facebook. OK deh, sekian dulu postingan tentang design pattern Observer kali ini