Minggu 5
Sesi 7
Prototype pattern
OUTLINE MATERI :
2. When to use
Prototype Pattern adalah sebuah pattern yang mengacu pada pembuatan "duplikat objek" atau
"pengkloningan objek" atau bisa dikatakan pattern ini membuat objek dengan mengkloning objek
yang telah ada. Pattern ini dimaksudakan untuk memangkas cost dalam pembuatan objek baru.
Artinya tanpa memdeklarasikan keyword "new" yang menyebabkan program boros memory.
Objek yang diduplikat memang adalah sesuatu yang bisa kita bilang sama tapi bukan berarti kita
tidak dapat mengubah konten atau nilai variabelnya. State dari original objek sama dengan clone
objeknya saat waktu dikloning.
Prototype Pattern ini termasuk ke dalam Creational Pattern. Kata-kata yang bisa
menggambarkan pattern ini diantaranya adalah "Duplicate" dan "Clone". Sebuah objek dapat
memunculkan objek lain yang mirip dengannya
Generic UML dan participant dari prototype pattern adalah sebagai berikut :
• Prototype: interface atau class abstrak Mendeklarasikan sebuah interface untuk mengklon
dirinya.
Clone dapat diimplementasikan baik berupa deep copy atau shallow copy.
Melalui Deep copy, semua object akan diduplikasi (parent object dan semua yang berkaitan
akan di copy), sedangkan shallow copy hanya menduplikasi top-level object (hanya parent)
dan memberikan reference untuk lower-level object nya.
• Menyediakan opsi bagi client untuk membuat objek yang tipenya tidak diketahui
• Metode copy untuk situasi kompleks akan memberikan efisiensi lebih ketimbang metode create
new
When to use
• Menghindari subclass dari object creator dalam aplikasi klien, tidak seperti abstract factory
pattern.
• Menghindari resource cost yang melekat (inherent cost) dari object baru yang dibuat sesuai
standar (misalnya, dengan menggunakan keyword ‘NEW’).
Pastikan dalam kelas kita menyisipkan kemampuan untuk clone agar objek yang di create nanti
bisa di clone.
Melalui implementasi berikut, kita hanya akan menginstansiate 1 object dari concrete class
tersebut dan akan membuat duplicate nya sehingga akan aktif 2 object dari 1 kali instansiate
menggunakan new keyword.
Melalui code diatas, kita pada dasarnya memiliki 5 objek, dimana 2 object phpproto dan sqlproto
adalah objek utama yang dihasilkan dari keyword new sebagai prototype object. Sedangkan
book1, book2 dan book3 dihasilkan melalui clone function dari prototype yang ada. Objek
tersebut masih memungkinkan untuk dimanipulasi lagi atribut-atribut nya.
• Enkapsulasi kode private dan expose hanya fungsi yang ingin kita set public
• Prototype pattern adalah pattern yang cukup simple dimana tidak diperlukan class khusus
untuk creating objek, namun kreasi objek membutuhkan objek lain sebagai prototype.
• Untuk menerapkan pattern ini, class harus meng implement clonable interface.
1. William Sanders. (2013). “Learning PHP Design Patterns”. O’Reilly Media, New York. ISBN :
9781449344917
2. https://sourcemaking.com/design_patterns/prototype/php
3. https://www.tutorialspoint.com/design_pattern/prototype_pattern.htm