Design Pattern - adamhendrabrata.files.wordpress.com · Dikenal juga dengan nama Wrapper. PPP...

43
A dapter & Facade Design Pattern Adam Hendra Brata

Transcript of Design Pattern - adamhendrabrata.files.wordpress.com · Dikenal juga dengan nama Wrapper. PPP...

Adapter &

Facade

Design

Pattern

Adam Hendra Brata

PPP

Web Services

Tujuan Perkuliahan

Memahami structural pattern: Adapter

Memahami structural pattern: Facade

Web Services

PPP

ADAPTER

PPP

Web Services

Introduksi

Perjalanan ke tempat yang jauh di seberang lautan

PPP

Web Services

Introduksi

PPP Introduksi

PPP Introduksi

Handphone Low Battery

PPP Introduksi

Mau nge-charge HandphoneTapi colokan listriknya nggak sama

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

Struktur

PPP

Web Services

Struktur

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

Web Services

PPP

Contoh kode :

ADAPTER

PPP

Web Services

Contoh Kode

PPP

Web Services

Contoh Kode

PPP

Web Services

Contoh Kode

PPP

Web Services

Contoh Kode

PPP

Web Services

Contoh Kode

PPP

Web Services

Contoh Kode

PPP

Web Services

Contoh Kode

Web Services

PPP

FACADE

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

PPP Motivasi

Terdiri dari banyak klas dan banyak juga interaksinya serta ada 1 set antarmuka yang besar untuk dipakai dan dipelajari

PPP Motivasi

PPP Motivasi

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

Struktur

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

Web Services

PPP

Contoh kode :

FACADE

PPP

Web Services

Contoh Kode

PPP

Web Services

Contoh Kode

PPP

Web Services

PPP

Web Services

Contoh Kode

PPP

Web Services

Contoh Kode

PPP

Web Services

Contoh Kode

Web Services

Terimakasih

v^^

PPP

I’m with you tillthe end of the line