Pattern
Decorator
Web Services
PPP
Web Services
introduksi
PPP Introduksi
Pernah minum kopi ?
Saat kita akan membeli kopi di sebuah restoran, maka kita
dihadapkan pada banyak sekali pilihan variasi kopi yang bisa
dipesan
Espresso, Latte, Black Coffee dll.
Web Services
PPP Introduksi
Tahu apa itu istilah Coffee Decoration ?
Web Services
PPP Introduksi
Web Services
PPP Introduksi
Alur kerja peracikan kopi
Barista mengambil salah satu jenis biji kopi dasar dan
menggiling biji kopi tersebut dengan mesin agar menjadi bubuk
kopi
Bubuk kopi yang sudah halus akan diseduh untuk membuat
kopi
Web
Services
Selanjutnya setelah seduhan kopi jadi, maka Barista akan
PPP
Web Services
decorator
PPP Decorator
Tujuan
Melampirkan tanggung jawab tambahan pada sebuah objek
secara dinamis
Memberikan alternatif untuk melakukan penurunan kelas yang
lebih fleksibel dengan tujuan memperluas fungsionalitasnya
Web Services
PPP Motivasi
Beverage adalah klas
abstrak, sifatnya dituruni
oleh klas-klas turunannya
yaitu minuman yang ada
dalam menu
description adalah
atribut untuk
memberikan deskripsi
pada klas Beverage dan
nantinya akan diturunkan
pada subklas
Tiap subklas mengimplementasikan method cost() untuk harga dari setiap jenis
minuman yang spesifik
PPP Motivasi
PPP Motivasi
Method cost() yang dimiliki
oleh klas Beverage
bertanggungjawab untuk
menghitung harga dari
bahan campuran saja
Method ini akan
diimplementasikan lebih
lanjut di subklas untuk
menghitung harga tiap
minuman
PPP Motivasi
Masih ingat dengan alur kerja peracikan kopi ?
Barista menyeduh kopi dari biji kopi jenis DarkRoast
Mendekorasinya dengan mocha
Mendekorasinya dengan krim
Web Services
PPP Pemakaian
Untuk menambah tanggung jawab untuk tiap objek individu
secara dinamis dan transparan tanpa mempengaruhi objek
lainnya
Untuk pendelegasian tanggung jawab yang dapat ditarik
kembali
Web Services
PPP Struktur
Web Services
PPP Unsur
Component
mendefinisikan antarmuka untuk objek yang dapat diberikan
tanggung jawab tambahan secara dinamis
ConcreteComponent
mendefinisikan sebuah objek yang dapat diberikan tanggung
jawab tambahan
Web Services
Decorator
mempertahankan referensi ke objek Component dan
mendefinisikan sebuah antarmuka yang sesuai dengan
antarmuka Component tersebut
ConcreteDecorator
menambahkan tanggung jawab untuk komponen tertentu
PPP Konsekuensi
Kolaborasi
Dekorator meneruskan permintaan ke objek Component nya
Bisa jadi dekorator dapat melakukan operasi tambahan
sebelum dan setelah meneruskan permintaan (secara
opsional)
Konsekuensi
Web
Services
(+) Lebih fleksibel daripada pewarisan statis menambahkan
properti ganda dengan lebih mudah
(+) Menghindari klas-klas dengan feature-laden yang tinggi
dalam hirarki pendekatan PAYG
(!) Dekorator dan komponennya tidak identik jangan
bergantung pada identitas objek
(!) Banyak objek-objek kecil yang terlihat sama susah untuk
dipelajari atau dilacak
PPP Implementasi
Kesesuaian Antarmuka
Antarmuka objek dekorator harus sesuai dengan antarmuka
komponen yang akan dia dekorasi
Web Services
PPP
Web Services
Contoh kode
Web Services
Web Services
Web Services
Web Services
Web Services
Web Services
Web Services
PPP
Terimakasih
v^^
Web Services