Sponsor Link

Tuesday, May 19, 2015

Penerapan Design Pattern Observer di PHP

Perkuliahan semester genap sudah dimulai dari kemarin dan saat itu pula tugas kuliah diberikan. Yaw, nasib jadi mahasiswa cuma bisa pasrah dan mengerjakan tugas yang diberikan. Nah, kebetulan tugas yang diberikan lumayan asik + sesuai sama hobi saya. Mata kuliahnya tentang design pattern dan tugasnya dikumpulkan via blog, artinya design pattern yang sampai saat ini berjumlah 25 ditulis penjelasannya di blog. Mirip-mirip seperti membuat sebuah tutorial lah. Yuppzzz, saya semakin sadar kenapa kita harus punya blog, apalagi sebagai “makhluk-makhluk” IT. Di postingan kali ini saya akan membahas tentang design pattern Observer (hasil semedi semalem). Design pattern ini mempunyai konsep kerja update simultan, dimana ketika suatu object mengalami perubahan (update,insert,delete) maka hasilnya akan ditampilkan ke class-class (pengamat) yang memanfaatkan object tersebut. Dan class-class (pengamat) bebas menggunakan hasil tersebut tanpa perlu laporan ke object. Contohnya seperti notifikasi sms, notifikasi email bahkan notifikasi di Facebook. “Masih bingung…???”, kita langsung aja ke contoh penerapannya.
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