Jumat, 25 November 2016

[PPL] Structural Design Pattern - Observer dan Penerapan Design Pattern

Apa itu Structural Design Pattern ? 

    Design Pattern adalah sebuah solusi untuk menyelesaikan masalah umum yang sering di temui dan dihadapi, yang membentuk sebuah pola (pattern) tertentu dalam membuat sebuah program. Pattern adalah bagaimana mendesain kelas dan bagaimana interaksi yang terjadi antar kelas tersebut sehingga kelas yang kita bangun bisa lebih elegan dan reusable. Ada beberapa  pattern yang populer saat ini yang diciptakan oleh GoF (Gang of Four) yaitu Abstract Factory, Builder, Factory Method, Prototype, Singleton, Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy, Chain of Responbility, Command, Interpreter, Iterator, Mediator, Mementto, Observer, State, Strategy, Template Method, Visitor.

   Secara singkat, design pattern adalah sebuah solusi untuk mengulang masalah design. Solusi ini telah dikembangkan, dikompile, dan disaring oleh programmer yang sebelumnya telah  menghadapi masalah ini. Sebuah design pattern adalah salah satu jenis petunjuk yang menggunakan tipe "Jika Anda memiliki masalah ini, maka lakukan ini." Hal tersebut serupa dengan sebuah algoritma : sebagai contoh, jika Anda ingin melakukan sebuah operasi pencarian pada sebuah daftar, Anda tidak perlu menyelesaikan dengan solusi Anda sendiri, terdapat beberapa algoritma yang  menyediakan  fungsi sorting ini seperti pencarian biner. Perbedaan antara sebuah Design pattern dan sebuah  algoritma adalah bahwa algoritma fokus pada implementasi solusi, sebuah algoritma biasanya mendaftar dari atas ke bawah menuju ke tahap akhir dari action-action yang terurut dimana yang dibutuhkan untuk menghasilkan sebuah solusi. Sebuah pattern memusatkan untuk menghasilkan beberapa Design.

    Hal tersebut memberitahu kepada pengembang apa yang harus diperbuat sebagai lawan dari bagaimana cara melakukannya. Mungkin tidak terlihat langsung hasilnya, tetapi kita telah siap menggunakan beberapa Design pattern dalam pembahasan Kita sebelumnya. Satu, Kita telah belajar secara detail pattern dari Model-View-Controller : diberikan sebuah masalah interaksi gabungan yang begitu kompleks antara presentasi dan layer business, Hal itu menentukan pemisahan kode menjadi tiga layer terpisah seperti interaksi-interaksi mereka. Ingat, pattern itu sendiri tidak mendikte implementasi, hanya dijelaskan sebuah solusi Design. Kita harus melaksanakan pattern MVC manapun untuk untuk menggunakan framework third-party.

Design Pattern dibagi menjadi 3 Kelompok yaitu : 
  1.  Creational design pattern Pattern ini hanya berbicara tentang bagaimana meng-instance sebuah kelas. Secara teori memang mudah untuk membuat object tetapi cara yang mudah tersebut belum tentu efektif. Adapun jenis-jenis dari creational design pattern adalah Abstract Factory, Builder, Factory Method, Object Pool, Prototype,Singleton. Dari sekian banyak jenis-jenis tersebut ada yang memiliki fungsi yang sama dan saling melengkapi.
  2. Structural design patterns Tujuan pattern ini untuk membuat class composite atau object composite. Tujuan utamanya adalam mempermudah dalam mendefinisi kan cara untuk meng-compose object untuk fungsionalitas yang baru. Adapun contoh dari pattern ini adalah : Adapter pattern, bridge pattern, composite pattern, Decorator, Facede, Flyweight, Proxy.
  3. Behavioral design patterns       Pattern ini adalah bertujuan untuk menangani kominikasi antar kelas atau object. Adapun contoh dari      pattern ini adalah : Chain of responsibility, Command, Interpreter, Iterator, Mediator, Observer, strategy. 



Apa itu Observer pada design Pattern?

Observer adalah pola desain software dimana suatu objek mempunyai daftar objek yang mamiliki ketergantungan / dependencies. Pola desain Observer dapat digunakan setiap kali subjek harus diamati oleh satu atau lebih Observer. Diasumsikan bahwa kita memiliki stock system yang menyediakan data untuk beberapa jenis client. Penerapan pola desain ini yaitu dengan mengimplementasikan client sebagai aplikasi berbasis web, tapi dalam waktu dekat kita perlu menambahkan client untuk perangkat mobile, Palm maupun pocket PC, atau sistem yang dapat memberi notifikasi kepada user menggunakan pesan singkat. Observable – interface atau kelas abstrak yang mendefinisikan operasi unutk melampirkan dan memisahkan observer ke client. Biasa dikenal sebagai subjek. ConcreteObservable – perwujudan kelas Observable. Mempertahankan state dari suatu objek dan apabila terjadi perubahan, observer akan diberikan notifikasi. Observer – interface atau kelas abstrak yang mendefinisikan operasi yang digunakan untuk memberi notifikasi objek. ConcreteObserverA, ConcreteObserverB – implementasi nyata dari Observer Prinsip dari observer pattern ini adalah ketika ada perubahan status di Subject, maka akan diberitahukan secara otomatis ke Observer (biasanya dengan memanggil suatu method) sehingga Subscriber akan menerima perubahan data seketika. Tujuannya dari Observer pattern adalah mendefiniskan hubungan one-to-many antar  object sehingga ketika sebuah object berubah state-nya, object-object lain yang bergantung juga ikut berubah..

Java Observer Class Diagram 



            Contoh Program observer 

Untuk contoh pengamatan di java , kita akan mengimplementasikan topic yang sederhana dan pengamat dapat mendaftar ke topik ini. Semua pesan baru akan di post ke topik, semua pengamat yang terdaftar akan diberikan pemberitahuan dan mereka bias melihat isi pesannya.

Berdasarkan persyaratan Subjek, di sini adalah interface Subjek dasar yang mendefinisikan metode yang akan dilaksanakan oleh setiap subjek.




Selanjutnya membuat kontrak untuk observer / pengamat , aka nada medode untuk melampirkan subjek ke pengamat dan metode lain yang akan digunakan oleh subject untuk pemberitahuan semua yang berubah


Sekarang kontrak sudah siap untuk di implementasikan ke topik yang dibuat 





Ini adalah program sederhana untuk mengetes menggunakan topik yang sudah di implementasikan.


Outputnya : 



Judul Contoh Paper Penerapan Design Pattern 

"Penerapan Design Patttern untuk Implementasi Alat Bantu Requirement Management berbassis komputer genggam"

Paper lengkap bisa dapat didownload di
http://rambutan.sourceforge.net/files/rambutan-paper.pdf


Referensi : 


Tidak ada komentar:

Posting Komentar