Event dan Listener ialah sebuah implementasi dari pattern Observer dalam Java. Pattern Observer sangat berguna digunakan untuk mendesign komunikasi yang konsisten antara object yang berdiri sendiri dan object-object yang bergantung padanya.
Observer design pattern melibatkan dua object utama, object pertama berlaku sebgai Subject dan object lainya berlaku sebagai Observer. Object Subject merupakan pusat perhatian dari object Observer, perubahan keadaan dari object Subject selalu dipantau oleh Observer.
Observer dapat melakukan register-unregister terhadap Subject. Jika Observer tertarik dengan perilaku dan keadaan dari Subject, Observer dapat meregister dirinya kepada Subject. Begitu juga sebaliknya jika Observer tidak tertarik terhadap keadaan atau perilaku Subject, Observer tidak perlu melakukan resgistrasi atau kalau sudah terlanjur reguister dapat melakukan unregister.
Subject mempunyai banyak aspek perilaku dan keadaan yang dapat dipantau oleh Observer. Untuk setiap aspek, Subject menyediakan method untuk register-unregister dan menyediakan interface yang harus diimplement oleh Observer yang ingin memantau aspek tersebut.
Pada satu titik tertentu, Subject akan memberitahu (notify) Observer tentang perilaku atau keadaanya. Subject akan mengumpulkan informasi tentang keadaan atau perilakunya kemudian mengirimkan pesan kepada Observer lewat interface yang telah disepakati keduanya, pola ini dikenal juga sebgai Event- Passing.
Pattern Observer dimaksudkan untuk mengurangi ketergantungan satu object terhadap object lain, istilah kerennya adalah Decoupling. Dengan mekanisme register-unregister, Observer dapat secara lebih leluasa memutuskan untuk memantau Subject tertentu atau tidak. Mekanisme notify memudahkan Subject memberitahu keadaan dan perilakunya kepada Observer yang sedang memantaunya.
Di bagian berikutnya kita akan melihat bagaimana pattern Observer diimplementasikan dalam swing. Akan dijelaskan pula bagaimana swing mengimplementasikan mekanisme register- unregister dan notify dalam menangani interaksi user terhadap komponen swing.
Pattern Observer melibatkan dua object Subject dan Observer, dalam swing Observer dikenal sebagai Listener. Kemudian, ketika Subject akan memberitahu (notify) Observer tentang apa yang sedang terjadi dalam object Subject, ada satu informasi yang akan di-passing oleh Subject ke Observer, informasi ini disebut sebagai Event object. Sedangkan kejadian ketika Subject melakukan notify kepada Observer disebut sebagai Event triggering.
Agar penjelasan diatas mudah dipahami, kita akan membuat aplikasi sederhana yang mengimplementasikan pattern Observer. Aplikasi sederhana ini terdiri dari dua class utama yaitu Subject dan Observer.
Class Subject akan menjalankan sebuah loop tanpa batas, di dalam loop tersebut Subject akan meminta input dari user berupa sebuah kata yang diakhiri dengan penekanan enter. Ketika user menekan enter, Subject akan menotify Observer. Dalam proses notifikasi tersebut, Subject mengumpulkan informasi tentang event pemasukan kata oleh user, informasi tersebut berupa : kata apa yang dimaksukkan dan object subject dimana event pemasukan kata tersebut terjadi (source). Kemudian Observer akan menerima informasi dari Subject dan mencetak informasi tersebut ke standard output.
No comments:
Post a Comment