Pola Desain Prototipe di Golang

Hai teman! Bersama Anda Alex dan saya melanjutkan rangkaian artikel kami tentang penggunaan pola desain dalam bahasa Golang .





Sangat menarik untuk menerima umpan balik dari Anda, untuk memahami betapa aplikasinya bidang pengetahuan ini dalam dunia bahasa Golang . Kami telah melihat templat: Pabrik Sederhana , Singleton , dan Strategi . Hari ini saya ingin mempertimbangkan pola desain lain - Prototipe .





Untuk apa itu dibutuhkan?

Ini adalah pola desain generatif yang memungkinkan objek disalin tanpa membahas detail implementasinya.





Masalah apa yang dipecahkannya?

Bayangkan Anda memiliki objek yang perlu disalin. Bagaimana cara melakukannya? Buat objek kosong dari kelas yang sama, lalu salin nilai semua bidang dari objek lama ke yang baru satu per satu. Baik, tapi ada nuansa! Tidak setiap objek dapat disalin dengan cara ini, karena bagian dari statusnya dapat bersifat pribadi, yang berarti tidak dapat diakses oleh kode program lainnya.





Ada masalah lain juga. Kode penyalinan akan menjadi tergantung pada kelas dari objek yang disalin. Lagi pula, untuk mengulangi semua bidang objek, Anda perlu mengikat kelasnya. Karena itu, Anda tidak akan dapat menyalin objek hanya dengan mengetahui antarmukanya dan bukan kelas tertentu.





Apa solusinya?

Template Prototipe menginstruksikan objek penyalinan itu sendiri untuk membuat salinan. Ini memperkenalkan antarmuka umum untuk semua objek yang mendukung kloning. Ini memungkinkan objek untuk disalin tanpa terikat ke kelas spesifiknya. Biasanya antarmuka seperti itu hanya memiliki satu metode klon.





. . , . , , , . , . .





- . , , . -, , . . , , .





Diagram Kelas Prototipe
Prototype Class Diagram

, . - clone. . . , , . , . .





?

, PHP . Prototype Golang.





- . , . ..   , - . , . , - , , .. 





- , . , , , ..





, , prototype



, clone



. struct



, show



clone



prototype



.





, . directory



, prototype



. . show



, clone



. clone



, - , . , _clone



.





. . , . :





Open directory 2
  Directory 2
    Directory 1
        category 1
    category 2
    category 3


Clone and open directory 2
  Directory 2_clone
    Directory 1_clone
        category 1_clone
    category 2_clone
    category 3_clone
      
      



?

  1. . , . , -, . .





  2. . , - , , . . , .





, Prototype :





  • .





  • , .





  • , abstract factory, .





, , . 63% , Golang - . , , , Golang - . , . , , .





, , . .

!








All Articles