Observer Pattern untuk Swing


Salah satu design pattern yang bermanfaat sekali bagi saya dalam pengembangan aplikasi Java Swing adalah Observer. Pada prinsipnya design pattern ini menerapkan konsep “langganan”. Dari sebuah class subject yang menghasilkan sebuah kejadian tertentu di daftarkan ke sebuah Observer atau yang akan mengerjakan sesuatu berdasar kejadian yang dimunculkan oleh class subject tersebut. Adapun Class Diagram dari design pattern Observer ini dapat dilihat di Observer Design Pattern UML.

Dalam kesempatan ini, saya mencoba menerapkan pattern tersebut ke sebuah aplikasi Swing sederhana yang dapat menampilkan progress bar di sebuah dialog, dimana untuk pengontrol nilainya berdasarkan pada eksekusi sebuah thread dari class lain. Java sudah menyediakan sebuah class dan interface untuk penerapan design pattern Observer ini, yaitu java.util.Observable dan java.util.Observer. Untuk contoh penerapannya, class dialog yang menampilkan progress bar didefinisikan sebagai sebuah class yang menerapkan java.util.Observer. Sedangkan untuk class pengontrol nilainya akan diturunkan dari java.util.Observable.

Kita buat sebuah Class yang diturunkan dari java.util.Observable yang akan melakukan penelusuran file dari sebuah direktori yang diberikan. Berikut adalah deklarasi class untuk hal tersebut:


package contoh.observer.budsus;

import java.io.File;
 import java.util.Observable;

/**
 *
 * @author budsus
 */
 public class TelusurFiles extends Observable implements Runnable {
...
public void run() {
visitAllDirsAndFiles(file);
// update ke Observer, bahwa telah selesai
setChanged();
notifyObservers( null );
}
 }

Setelah itu, kita definisikan sebuah class yang diturunkan dari JFrame dan menerapkan java.util.Observer untuk menangkap event dari Observable. Silahkah mengunduh direktori project Netbeans 6.1 yang sudah saya buat, dengan nama project SwingObserver.

Contoh hasil tampilan dapat ditunjukkan pada gambar 1.

Gambar 1. Contoh Tampilan SwingObserver

Gambar 1. Contoh Tampilan SwingObserver

Sumber Info lain:

3 thoughts on “Observer Pattern untuk Swing

  1. Pak, keuntungan menggunakan Observer pattern ini apa ya? koq kyknya program bisa dibuat tanpa memakai observer?

    Regards,
    ybrian

    • Keuntungan observer pada Swing adalah kita dapat membuat sebuah method yang dipantau dan memantau oleh method lain. Contoh sederhana adalah kita dapat membuat sebuah “jalannya” progress bar sesuai dengan komputasi yang benar-benar kita lakukan… dan karena menerapkan design pattern, mestinya struktur program kita lebih mudah untuk dimaintenance.

Komentar ditutup.