Anda di halaman 1dari 9

LECTURE NOTES

Framework Layer Architecture

Minggu 5
Sesi 7

Prototype pattern

COMP6287 - Framework Layer Architecture


LEARNING OUTCOMES

• Peserta diharapkan mampu merancang solusi berorientasi objek dengan


mengimplementasikan design pattern.

OUTLINE MATERI :

1. Prototype pattern conceptual

2. When to use

3. Using prototype pattern (example)

COMP6287 - Framework Layer Architecture


ISI MATERI

• Prototype Pattern Conceptual.

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.

• ConcretePrototype: Mengimplementasikan sebuah operasi untuk mengklon dirinya sendiri.


Class ini mengimplementasikan interface prototype dengan mendefinisikan metode klon,
ketika method klon dari objek ConcretePrototype dipanggil, ia mengembalikan salinan
objek tersebut.

COMP6287 - Framework Layer Architecture


• Client: Menciptakan object baru dengan meminta prototype untuk mengklon dirinya
dengan menyediakan objek ConcretePrototype baru. Metode kloning didefinisikan dalam
setiap class ConcreteProtoype.

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.

Keuntungan dari pattern ini adalah :

• Menyembunyikan kompleksitas pembuatan objek dari client

• 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

Pattern ini digunakan untuk:

• Aplikasi harus independen dari bagaimana produk dibuat maupun disusun.

• Objek hanya dikenal pada saat run-time

• 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’).

• Untuk mengimplementasikan pattern, deklarasikan sebuah abstract base class yang


menentukan sebuah pure virtualclone() method. Setiap class yang memerlukan sebuah
“polymorphic constructor”, maka kemampuan itu berasal dari class abstract base dirinya
sendiri, dan mengimplementasikan operasi clone().

COMP6287 - Framework Layer Architecture


• Klien, tidak menulis kode yang meminta operator “new” pada sebuah hard-coded class name,
tetapi memanggil method clone() untuk membuat objek baru dari objek yang sudah ada
sebelumnya.

Using factory pattern

Sebuah class dengan fungsi clone

Pastikan dalam kelas kita menyisipkan kemampuan untuk clone agar objek yang di create nanti
bisa di clone.

COMP6287 - Framework Layer Architecture


Melalui kode simple diatas, kita hanya memiliki 2 concrete subclassess yakni PHPBookPrototype
dan SQLBookPrototype yang merupakan extend dari BookPrototype.

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.

COMP6287 - Framework Layer Architecture


Output dari implementasi diatas adalah sebagai berikut :

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.

COMP6287 - Framework Layer Architecture


KESIMPULAN

Dengan menggunakan prototype pattern keuntungan yang didapat diantaranya :

• Memory lebih efisien

• 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.

• Clone lebih efisien ketimbang menggunakan key new.

COMP6287 - Framework Layer Architecture


DAFTAR PUSTAKA

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

COMP6287 - Framework Layer Architecture

Anda mungkin juga menyukai