Design Pattern - adamhendrabrata.files.wordpress.com · Dikenal juga dengan nama Wrapper. PPP...
Transcript of Design Pattern - adamhendrabrata.files.wordpress.com · Dikenal juga dengan nama Wrapper. PPP...
PPP
Web Services
Tujuan Perkuliahan
Memahami structural pattern: Adapter
Memahami structural pattern: Facade
PPP
Web Services
Adapter
Tujuan
“Merubah” antarmuka sebuah klas menjadi antarmuka klas yang lain yang diinginkan
Adapter memungkinkan klas – klas dapat bekerja sama yang sebelumnya tidak dapat dilakukan karena antarmuka yang tidak cocok
Dikenal juga dengan nama Wrapper
PPP Motivasi
Lubang colokan stopkontak yang tidak sama dengan tipe colokan yang dipakai
Antarmuka yang disediakan tidak sama dengan kode yang sudah kita tulis
Adapter mengimplementasikan antarmuka yang dipakai oleh klas yang kita buat dan adapter dapat “menyambungkan” permintaan kita dengan antarmuka dari vendor agar tetap dapat terlayani
Dapat berkomunikasi tanpa harus merubah kode sistem kita ataupun kode dari sistem lain, kita hanya butuh menulis kode baru untuk “menerjemahkan”
PPP
Web Services
Motivasi
Kadang – kadang toolkit atau klas-klas library tidak dapat digunakan karena antarmukanya tidak sesuai dengan antarmuka yang diperlukan oleh aplikasi
Kita tidak dapat mengubah antarmuka dari library, karena kita bisa jadi tidak memiliki kode sumbernya
Bahkan jika kita memiliki kode sumbernya, kita tidak harus mengubah kode dalam libraryuntuk setiap aplikasi yang spesifikkarena hal ini sangat tidak efisien
PPP
Web Services
Pemakaian
Kita ingin menggunakan klas yang sudah ada (bisa dari library atau sistem lain) namun antarmukanya tidak cocok dengan yang kita butuhkan
Kita ingin membuat kelas yang dapat “digunakan kembali”, yang dapat bekerja sama dengan klas lain yang tidak berada pada sistem kita (atau dengan kata lain klas lain ini dari sistem yang lain) dengan antarmuka yang tidak cocok
PPP
Web Services
Unsur
Target
mendefinisikan antarmuka spesifik yang digunakan Client
Client
bekerja sama dengan objek – objek yang sesuai dengan antarmuka Target
Adaptee
mendefinisikan sebuah antarmuka yang sudah ada dan yang perlu beradaptasi
Adapter
menyesuaikan antarmuka Adaptee untuk antarmuka Target
PPP Introduksi
Kita pasti pernah saat ingin melakukan sesuatu akan tetapi pasti ada hal – hal lain yang harus kita lakukan sebelum kita melakukan tujuan utama kita
Nonton film di rumah, tapi sebelum itu harus melakukan banyak hal
PPP Introduksi
Pernahkah kita mengkhayal punya sebuah “remote ajaib”yang bisa membantu kita menyelesaikan tugas-tugas dengan sekali tekan saja
PPP
Web Services
Facade
Tujuan
Menyediakan antarmuka yang seragam untuk satu set antarmuka dalam sebuah subsistem
Facade mendefinisikan antarmuka tingkat tinggi yang membuat subsistem lebih mudah digunakan
PPP Motivasi
Terdiri dari banyak klas dan banyak juga interaksinya serta ada 1 set antarmuka yang besar untuk dipakai dan dipelajari
PPP
Web Services
Pemakaian
Kita ingin memberikan antarmuka yang sederhana untuk subsistem yang kompleks
Ada banyak ketergantungan antara klien dan klas - klas yang mengimplementasikan abstraksi
Kita dapat menggunakan facade untuk memisahkansubsistem tersebut dari klien dan dari subsistem yang lain, sehingga meningkatkan tingkat independen dan portabilitas dari subsistem
Kita ingin membuat “lapisan” atau tingkatan dari subsistem kita
Kita dapat menggunakan facade untuk menentukan “entry point” dari setiap tingkatan subsistem
PPP
Web Services
Unsur
Facade
Mengetahui klas subsistem mana yang bertanggung jawabterhadap sebuah permintaan
Mendelegasikan permintaan klien pada subsistem yang tepat
Subsystem Classes
Mengimplementasikan fungsionalitas dari subsistem
Menangani pekerjaan yang “ditugaskan” oleh Facade
Tidak memiliki pengetahuan tentang Facade
Tidak memiliki referensi terkait hal itu
PPP
Web Services
Kolaborasi
Klien berkomunikasi dengan subsistem dengan mengirimkan permintaan pada Facade, kemudian Facade yang akan mereruskan pesan tersebut pada subsistem yang tepat
Klien yang menggunakan Facade tidak perlu mengakses subsistem secara langsung