1. Deskripsi adegan
Dalam mode pembuatan, dari mode metode pabrik, mode pabrik abstrak, ke mode pembangun, dan kemudian ke mode prototipe, pemahaman saya adalah bahwa cara membuat objek secara bertahap bergeser dari pengkodean implementasi ke pemrosesan objek memori.
Misalnya, selama pembuatan subkelas/objek "pengumpul data file pdf" dan "pengumpul data file excel",
Setiap subkelas didefinisikan dalam mode pabrik dan dibuat oleh pabrik kelas pabrik (abstrak), sehingga setiap subkelas dapat menentukan sifat masing -masing dalam definisi kelas;
Dalam mode builder, sub-objek yang berbeda dibuat melalui pembangun kelas pencipta yang berbeda, dan sub-kelas tidak lagi didefinisikan saat ini;
Dalam mode prototipe, penelepon membuat objek anak sepenuhnya berdasarkan pada kloning objek induk, dan tidak membuat kelas untuk objek anak atau kelas pabrik atau pembangun terkait.
Tiga mode sesuai dengan skenario yang berbeda. Saat benar -benar beroperasi, mode dipilih secara wajar sesuai dengan skenario.
Dalam mode prototipe, objek baru dibuat berdasarkan objek prototipe, sehingga nilai atribut yang ditetapkan untuk objek prototipe dapat digunakan secara langsung dalam objek baru, menghilangkan penugasan berulang;
Misalnya, pekerjaan inisialisasi umum dari pengumpul data instrumen dapat diselesaikan dalam objek prototipe, yang kemudian dapat dikloning dari objek pengumpul data file PDF dan objek pengumpul data file Excel, dan ekspansi berikutnya dari kedua sifat objek dihilangkan, yang menghilangkan pekerjaan inisialisasi atribut publik;
Operasi kloning selesai dalam memori. Karena nilai atribut dari tipe objek disimpan sebagai referensi, kloning dibagi menjadi kloning dangkal dan kloning dalam, dan kloning dalam direalisasikan melalui antarmuka yang dapat diserialisasi.
2. Kode Sampel
Prototipe:
Paket lims.designpatterndemo.prototypedemo; impor java.io.bytearrayinputStream; impor java.io.bytearrayoutputStream; impor java.io.Objection; impor java.objectinputStream; impor java.io.Objectoutsputapsstream; Kloning, serializable {private string filePath = "file path"; Private String EquipmentData = "Konten File"; // string publik getFilePath () {return this.filePath; } public void setFilePath (string filePath) {this.filePath = filepath; } public string getequipmentData () {return this.equipmentData; } public void setequipmentData (String EquipmentData) {this.equipmentData = EquipmentData; } // private static final long serialversionuid = 1l; Obj Serializable Serializable Private; // Public SerializableObject getobj () {return obj; } public void setobj (serializableObject obj) {this.obj = obj; } // Public EquipmentDataCapture getequipmentDataCapture () melempar clonenotsupportedException {EquipmentDataCapture capture = (EquipmentDataCapture) super.clone (); return capture; } // Public EquipmentDataCapture getPdffileCapture () melempar clonenotsupportedException {// equipmentDatacapture capture = (peralatanDatacapture) super.clone (); // capture.setequipmentData ("konten file pdf"); // return capture; //} // Public EquipmentDataCapture getExcelfileCapture () melempar cloneNotsupportedException {// equipmentDatacapture capture = (equipmentDatacapture) super.clone (); // capture.setequipmentData ("konten file excel"); // return capture; //}/* salinan dalam*/ peralatan publikDataCapture newequipmentDatacapture () melempar ioException, ClassNotFoundException {/* Tulis aliran biner ke objek saat ini*/ bytearrayoutputStream bos = bytearrayoutputStream baru (); ObjectOutputStream OOS = ObjectOutputStream baru (BOS); oos.writeObject (ini); /* Baca objek baru yang dihasilkan oleh aliran biner*/ bytearrayInputStream bis = bytearrayinputStream baru (bos.tobytearray ()); ObjectInputStream OIS = ObjectInputStream baru (BIS); return (EquipmentDataCapture) ois.readObject (); }} class SerializableObject mengimplementasikan serializable {private static final long serialversionuid = 1l;}Sisi Panggilan:
Paket lims.designpatterndemo.prototypedemo; prototipe kelas publik {public static void main (string [] args) melempar clonenotsupportedException {equipmentDatacapture edc = new EquipmentDataCapture (); Capture EquipmentDataCapture = null; // capture = edc.getpdffileCapture (); // capture = edc.getExcelfileCapture (); capture = edc.getequipmentDatacapture (); capture.setequipmentData ("Konten File Data Peralatan"); String filecontent = capture.getequipmentData (); System.out.println (filecontent); }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.