Prototype

chmood
Β  Β Tentukan jenis objek untuk membuat menggunakan contoh prototipikal, dan membuat objek baru dengan menyalin prototipe ini.
Co-memilih satu contoh dari kelas untuk digunakan sebagai peternak semua kasus masa depan.
Operator baru dianggap berbahaya.
Masalah
Aplikasi "kabel keras" kelas objek untuk membuat setiap "baru" ekspresi.

Β  Β Mendeklarasikan sebuah kelas dasar abstrak yang menentukan virtual metode "clone" murni, dan, mempertahankan sebuah kamus dari semua "cloneable" kelas beton berasal. Setiap kelas yang membutuhkan "konstruktor polimorfik" kemampuan: berasal diri dari kelas dasar abstrak, register contoh prototipikal, serta mengimplementasikan clone () operasi.

Klien kemudian, alih-alih menulis kode yang memanggil "baru" operator pada nama kelas terprogram, panggilan "clone" operasi pada kelas dasar abstrak, memasok string atau disebutkan tipe data yang menunjuk tertentu beton kelas turunan yang diinginkan .

Struktur

Β  Β Pabrik tahu bagaimana menemukan Prototipe yang benar, dan setiap Produk tahu bagaimana menelurkan kasus baru dari dirinya sendiri


Contoh
Β  Β Pola Prototipe menentukan jenis objek untuk membuat menggunakan contoh prototipikal. Prototipe produk baru sering dibangun sebelum produksi penuh, tetapi dalam contoh ini, prototipe pasif dan tidak berpartisipasi dalam menyalin dirinya sendiri. Pembelahan mitosis dari sel - menghasilkan dua sel yang identik - adalah contoh dari prototipe yang memainkan peran aktif dalam menyalin dirinya sendiri dan dengan demikian, menunjukkan pola Prototype. Ketika perpecahan sel, sel-sel dari dua hasil genotvpe identik. Dengan kata lain, klon sel itu sendiri


Periksa daftar
Β  Β Menambahkan metode clone () untuk hirarki "produk" yang ada.
Desain "registry" yang mempertahankan cache objek prototipikal. Registri dapat dikemas dalam kelas Pabrik baru, atau di kelas dasar dari hirarki "produk".
Merancang metode pabrik yang: mungkin (atau tidak mungkin) menerima argumen, menemukan objek prototipe yang benar, panggilan clone () pada objek itu, dan mengembalikan hasilnya.
Klien menggantikan semua referensi untuk operator baru dengan panggilan ke metode pabrik.
Aturan praktis
Terkadang pola penciptaan adalah pesaing: ada kasus-kasus ketika salah Prototipe atau Abstrak Pabrik dapat digunakan dengan baik. Di lain waktu mereka complementory: Abstrak Pabrik mungkin menyimpan satu set Prototip dari mana untuk mengkloning dan kembali objek produk. Abstrak Pabrik, Builder, dan Prototype dapat menggunakan Singleton dalam implementasi mereka.
Kelas Pabrik abstrak seringkali dilaksanakan dengan Metode Pabrik, tetapi mereka dapat diimplementasikan menggunakan Prototype.
Pabrik Metode: penciptaan melalui warisan. Protoype: penciptaan melalui delegasi.
Seringkali, desain mulai menggunakan Metode Pabrik (kurang rumit, lebih disesuaikan, subclass berkembang biak) dan berkembang ke arah Abstrak Pabrik, protoype, atau Builder (lebih fleksibel, lebih kompleks) sebagai desainer menemukan di mana lebih fleksibel diperlukan.
Prototipe tidak memerlukan subclassing, tapi itu memerlukan "initialize" operasi. Metode pabrik membutuhkan subclassing, tapi tidak memerlukan inisialisasi.
Desain yang membuat penggunaan berat Composite dan dekorator pola sering bisa mendapatkan keuntungan dari Prototype juga.
Prototipe co-opts satu contoh dari kelas untuk digunakan sebagai peternak semua kasus masa depan.
Prototipe yang berguna ketika inisialisasi objek mahal, dan Anda mengantisipasi beberapa variasi pada parameter inisialisasi. Dalam konteks ini, Prototype dapat menghindari mahal "ciptaan dari awal", dan mendukung kloning murah dari prototipe pra-diinisialisasi.
Prototipe adalah unik di antara pola penciptaan lain dalam hal itu tidak memerlukan kelas - hanya sebuah objek. Bahasa berorientasi objek seperti Diri dan Omega yang melakukan jauh dengan kelas sepenuhnya mengandalkan prototipe untuk membuat objek baru


Komentar