Definisi: Gunakan instance prototipe untuk menentukan jenis objek yang akan dibuat, dan membuat objek baru dengan menyalin prototipe ini.
Ketik: Buat Pola Kelas
Diagram kelas:
Pola prototipe terutama digunakan untuk penyalinan objek, dan intinya adalah prototipe kelas prototipe dalam diagram kelas. Kelas prototipe perlu memenuhi dua kondisi berikut:
Menerapkan antarmuka yang dapat dikloning. Ada antarmuka yang dapat dikloning dalam bahasa Java, yang hanya memiliki satu fungsi, yaitu untuk memberi tahu mesin virtual saat runtime yang dapat dengan aman menggunakan metode klon pada kelas yang mengimplementasikan antarmuka ini. Dalam mesin virtual Java, hanya kelas yang mengimplementasikan antarmuka ini yang dapat disalin, jika tidak, clonenotsupportedException akan dilemparkan saat runtime.
Tulis ulang metode klon di kelas objek. Di Java, kelas induk dari semua kelas adalah kelas objek. Ada metode klon di kelas objek, yang mengembalikan salinan objek, tetapi ruang lingkupnya adalah tipe yang dilindungi, dan kelas umum tidak dapat dipanggil. Oleh karena itu, kelas prototipe perlu memodifikasi ruang lingkup metode klon untuk tipe publik.
Mode prototipe adalah mode yang relatif sederhana dan sangat mudah dimengerti. Untuk mengimplementasikan antarmuka dan menulis ulang metode, mode prototipe selesai. Dalam aplikasi praktis, pola prototipe jarang muncul sendiri. Ini sering dicampur dengan pola lain, dan prototipe kelas prototipe juga sering digantikan oleh kelas abstrak.
Kode Implementasi:
Paket PrototipePattern; Public Class ProtoTyPeClass mengimplementasikan kloning {@Override PrototypeClass Clone () {ProtoTypeClass ProtoTypeClass = null; coba {prototipeClass = (prototipeClass) super.clone (); } catch (clonenotsupportedException e) {// todo auto-generated catch block e.printstacktrace (); } return prototipeClass; }}Klien:
Paket PrototipePattern; klien kelas publik {public static void main (string [] args) {prototipeClass obj1 = new ProTotyPeClass (); PrototipeClass obj2 = obj1.clone (); System.out.println (OBJ1); System.out.println (OBJ2); }} Keuntungan dari mode prototipe dan skenario yang berlaku
Membuat objek menggunakan mode prototipe jauh lebih baik daripada yang baru secara langsung, karena metode klon dari kelas objek adalah metode lokal yang secara langsung memanipulasi aliran biner dalam memori, terutama ketika menyalin objek besar, perbedaan kinerja sangat jelas.
Manfaat lain dari menggunakan pola prototipe adalah menyederhanakan pembuatan objek, membuat objek membuat sesederhana copy-paste ketika kami mengedit dokumen.
Karena keunggulan di atas, Anda dapat mempertimbangkan untuk menggunakan pola prototipe ketika Anda perlu membuat objek serupa berulang kali. Misalnya, Anda perlu membuat objek di badan loop. Jika proses pembuatan objek lebih rumit atau jumlah siklus banyak, menggunakan mode prototipe tidak hanya dapat menyederhanakan proses pembuatan, tetapi juga meningkatkan kinerja keseluruhan sistem.
Prototipe kelas publik mengimplementasikan kloning {private arraylist list = new arraylist (); prototipe publik clone () {prototipe prototipe = null; coba {prototipe = (prototipe) super.clone (); prototipe.list = (arraylist) this.list.clone (); } catch (clonenotsupportedException e) {e.printstacktrace (); } return prototipe; }}Catatan tentang Mode Prototipe:
Karena ArrayList bukan tipe dasar, daftar variabel anggota tidak akan disalin, dan kita perlu menerapkan salinan yang dalam sendiri. Untungnya, sebagian besar kelas kontainer yang disediakan oleh Java menerapkan antarmuka yang dapat dikloning. Jadi tidak terlalu sulit untuk mencapai penyalinan yang mendalam.
PS: Dalam salinan dalam dan masalah salinan dangkal, salinan dalam akan terjadi, termasuk tipe dasar dalam 8 java dan jenis enkapsulasi mereka, dan ada juga jenis string. Sisanya adalah salinan dangkal.