Prototype
Oleh
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
Category
Komentar