Anda di halaman 1dari 7

Definition Prototype pattern adalah creational design pattern yang digunakan dalam pengembangan perangkat lunak ketika jenis

objek untuk menciptakan ditentukan oleh contoh prototipikal, yang diklon untuk menghasilkan objek baru. Pattern ini digunakan ketika cost untuk menciptakan objek baru dengan cara standar (menggunakan kata kunci new) sangat tinggi / mahal untuk aplikasi tertentu. Prototype pattern dimulai dengan inisialisasi dan instansiasi class dan mencopy atau clone class tersebut untuk membuat intance baru dari pada menciptakan instance baru. Prototype pattern dapat digunakan ketika : Aplikasi harus independen dari bagaimana produk dibuat maupun disusun. objek yang dibutuhkan hanya dikenal saat run-time. Sebuah aplikasi membutuhkan class yang berbeda. Class untuk instansiasi ditentukan saat run time.

Structure

Participant Prototype interface atau class abstrak Mendeklarasikan sebuah interface untuk mengklon dirinya. ConcretePrototype - Mengimplementasikan sebuah operasi untuk meggklon dirinya sendiri. Class ini mengimplementasikan interface prototype dengan mendefinisikan metode klon, ketika method klon dari objek ConcretePrototype dipanggil, ia mengembalikan salinan objek tersebut. Client - Menciptakan object baru dengan meminta prototype untuk mengklon dirinya dengan menyediakan objek ConcretePrototype baru. Metode kloning didefinisikan dalam setiap class ConcreteProtoype.

Proses kloning dimulai dengan inisiasi dan instansiasi class. Class Client meminta objek baru dari tipe tersebut dan mengirimkan permintaan ke class prorotipe. Class concretePrototype, tergantung dari jenis ojek yang dibutuhkan, akan menangani kloning melalui method Clone(), membuat instance baru dari dirinya sendiri.

Keuntungan dan kekurangan dari penggunaan prototype pattern Keuntungan 1. Add dan remove class saat run time. 2. Menentukan objek baru dengan memvariasikan nilai atau struktur lain, bisa jugakeduanya. 3. Mengurangi sub classing. Kekurangan Mengimplementasikan klon sangat sulit ketika object yang hendak diklon reference ke atau pada object lain.

/** * Prototype class */ abstract class Prototype implements Cloneable { @Override public Prototype clone() throws CloneNotSupportedException { return (Prototype)super.clone(); } public abstract void setX(int x); public abstract void printX(); public abstract int getX(); } /** * Implementation of prototype class */ class PrototypeImpl extends Prototype { int x; public PrototypeImpl(int x) { this.x = x; }

public void setX(int x) { this.x = x; } public void printX() { System.out.println("Value :" + x); } public int getX() { return x; } } /** * Client code */ public class PrototypeTest { public static void main(String args[]) throws CloneNotSupportedException { Prototype prototype = new PrototypeImpl(1000); for (int i = 1; i < 10; i++) { Prototype tempotype = prototype.clone(); // Usage of values in prototype to derive a new value. tempotype.setX( tempotype.getX() * i); tempotype.printX(); } } } /* **Code output** Value :1000 Value :2000 Value :3000 Value :4000 Value :5000 Value :6000 Value :7000

Kesimpulan
Pola prototipe memiliki maksud tunggal untuk mengkloning contoh objek dari objek prototipe. Ketika klon telah dibuat, itu dapat mendefinisikan kembali state dari nilai-nilai anggota/properti. Properti ini memungkinkan untuk pembuatan aplikasi dinamis di mana kelas-kelas baru diciptakan dengan kebutuhan untuk kode mereka. Selain itu, pola ini juga memudahkan proses pembuatan obyek dan memungkinkan untuk penciptaan dinamis dan penghapusan objek. Operasi ini paling baik dilaksanakan dengan manajer prototipe, yang bekerja sebagai registri prototipe, dalam aplikasi yang jumlah objek yang dibutuhkan tidak diketahui. Pola ini hanya mendefinisikan sebuah antarmuka yang memungkinkan objek untuk kembali salinan diri mereka, dan kelas beton yang menerapkan metode kloning tersebut. Ketika metode kloning sedang dirancang, pengembang desainer / harus diingat seberapa dalam salinan objek harus pergi dan apa objek yang akan dibagi. Masalah ini dikenal sebagai penyalinan dangkal dan dalam dari objek. Jika topik ini diabaikan, masalah memori beberapa manajemen akan timbul.

Maksud menentukan jenis objek untuk membuat menggunakan contoh prototipikal menciptakan objek baru dengan menyalin prototipe ini Pelaksanaan Pola ini menggunakan kelas abstrak, seperti yang akan kita lihat di bawah dan hanya tiga jenis kelas membuat pelaksanaannya lebih mudah.

Kelas-kelas yang berpartisipasi untuk Pola Prototipe adalah: Klien - menciptakan objek baru dengan meminta prototipe untuk mengkloning dirinya sendiri. Protonema - menyatakan sebuah antarmuka untuk kloning itu sendiri. ConcretePrototype - menerapkan operasi untuk kloning itu sendiri. Proses kloning dimulai dengan kelas diinisialisasi dan instantiated. Klien meminta objek baru dari tipe tersebut dan mengirimkan permintaan ke kelas Prototipe. Sebuah ConcretePrototype, tergantung dari jenis objek yang dibutuhkan, akan menangani kloning melalui Clone () metode, membuat contoh baru dari dirinya sendiri. / / Kode Contoh ini agak sepele, tetapi penggunaan nyata dari pola datang ketika kita tidak tahu apa yang kita benar-benar kloning. Sebagai contoh jika kita membutuhkan objek yang baru dibuat untuk disimpan dalam hashtable kita dapat menggunakannya seperti ini: Berlakunya & Contoh Gunakan Pola Prototipe ketika sistem harus independen dari bagaimana produk dibuat, disusun, dan diwakili, dan: Kelas yang akan dipakai ditentukan pada saat run-time Menghindari penciptaan hierarki pabrik diperlukan Akan lebih mudah untuk menyalin sebuah contoh yang sudah ada daripada membuat yang baru. Contoh 1 Dalam membangun tahap untuk permainan yang menggunakan labirin dan objek visual yang berbeda bahwa karakter bertemu diperlukan metode cepat menghasilkan peta kabut menggunakan objek yang sama: dinding, pintu, bagian, ruang ... Pola Prototipe berguna dalam hal ini karena bukan hard coding (dengan menggunakan operasi baru) benda-benda ruang, pintu, bagian dan dinding yang bisa dipakai, CreateMaze metode akan parameterized oleh berbagai objek ruang, pintu, dinding dan bagian prototipikal, sehingga komposisi peta dapat dengan mudah diubah dengan mengganti objek prototipikal dengan orang yang berbeda. Klien adalah metode CreateMaze dan kelas ConcretePrototype akan menjadi yang membuat salinan untuk objek yang berbeda. Contoh 2: Misalkan kita melakukan analisis penjualan pada seperangkat data dari database.Biasanya, kita akan menyalin informasi dari database, merangkum menjadi objek dan melakukan analisis. Tapi jika analisis lain diperlukan pada set data yang sama, membaca database lagi dan menciptakan objek baru bukan ide yang terbaik. Jika kita menggunakan pola Prototipe maka objek yang digunakan dalam analisis pertama akan dikloning dan digunakan untuk analisis lainnya.

Klien di sini salah satu metode yang memproses suatu objek yang mengenkapsulasi informasi dari database. Kelas ConcretePrototype akan kelas yang, dari objek dibuat setelah penggalian data dari database, akan menyalinnya menjadi benda-benda yang digunakan untuk analisis. Spesifik masalah dan implementasi Menggunakan manajer prototipe Ketika aplikasi menggunakan banyak prototipe yang dapat diciptakan dan dihancurkan secara dinamis, registri prototipe tersedia harus dijaga. Registri ini disebut manajer prototipe dan harus melaksanakan operasi untuk mengelola prototipe terdaftar seperti mendaftar prototipe dalam tombol tertentu, mencari prototipe dengan kunci yang diberikan, menghapus satu dari register, dll Klien akan menggunakan antarmuka darimanajer prototipe untuk menangani prototipe pada saat run-time dan akan meminta izin sebelum menggunakan Clone () method. Ada banyak perbedaan antara sebuah implementasi dari prototipe yang menggunakan manajer prototipe dan metode pabrik diimplementasikan menggunakan mekanisme pendaftaran kelas. Mungkin perbedaan hanya terdiri dalam kinerja. Menerapkan operasi Clone Sebuah diskusi kecil muncul ketika berbicara tentang seberapa dalam atau dangkal klon harus: sebuah klon klon dalam variabel contoh di objek kloning sementara saham klon dangkal variabel misalnya antara klon dan asli. Biasanya, klon dangkal yang cukup dan sangat sederhana, tapi prototipe kompleks kloning harus menggunakan klon yang mendalam sehingga klon dan yang asli adalah independen, clone mendalam membutuhkan komponen untuk menjadi klon dari komponen obyek yang kompleks itu. Inisialisasi klon Ada kasus ketika negara internal klon harus diinisialisasi setelah dibuat. Hal ini terjadi karena nilai-nilai ini tidak dapat dikirimkan ke metode Clone (), yang menggunakan antarmuka yang akan hancur jika parameter tersebut digunakan. Dalam hal ini inisialisasi harus dilakukan dengan menggunakan pengaturan dan ulang operasi dari kelas prototipe atau dengan menggunakan metode menginisialisasi yang mengambil sebagai parameter nilai-nilai di mana negara internal klon harus di set. Hot poin Manajer Protonema - diimplementasikan biasanya sebagai hashtable menjaga objek untuk mengkloning. Ketika menggunakannya, prototipe menjadi metode pabrik yang menggunakan kloning bukan Instansiasi. Klon yang mendalam vs Klon Dangkal - ketika kita mengkloning objek yang kompleks yang berisi objek lain, kita harus berhati-hati bagaimana mereka kloning. Kita bisa mengkloning objek yang terkandung juga (kloning dalam) atau kita

dapat referensi yang sama untuk mereka, dan untuk berbagi antara objek kontainer kloning. Menginisialisasi internal Serikat - ada situasi tertentu ketika benda perlu diinisialisasi setelah mereka diciptakan.

Anda mungkin juga menyukai