Patrón de diseño de prototipos en Golang

¡Hola amigos! Contigo Alex y yo continuamos nuestra serie de artículos sobre el uso de patrones de diseño en el idioma Golang .





Es interesante recibir sus comentarios para comprender cuán aplicable es esta área de conocimiento en el mundo del idioma Golang . Ya hemos analizado las plantillas: Simple Factory , Singleton y Strategy . Hoy quiero considerar otro patrón de diseño: Prototipo .





¿Para qué se necesita?

Es un patrón de diseño generativo que permite copiar objetos sin entrar en los detalles de su implementación.





¿Qué problema soluciona?

Imagina que tienes un objeto que necesitas copiar. ¿Cómo hacerlo? Cree un objeto vacío de la misma clase, luego copie los valores de todos los campos del objeto antiguo al nuevo uno por uno. ¡Bien, pero hay un matiz! No todos los objetos se pueden copiar de esta manera, porque parte de su estado puede ser privado, lo que significa que es inaccesible para el resto del código del programa.





También hay otro problema. El código de copia dependerá de las clases de los objetos copiados. Después de todo, para iterar sobre todos los campos de un objeto, debe vincularse a su clase. Debido a esto, no podrá copiar objetos conociendo solo sus interfaces y no clases específicas.





¿Cual es la solución?

La plantilla Prototipo instruye a los objetos que copian ellos mismos para que hagan copias. Introduce una interfaz común para todos los objetos que admiten la clonación. Esto permite que los objetos se copien sin estar vinculados a sus clases específicas. Normalmente, una interfaz de este tipo tiene un solo método de clonación.





. . , . , , , . , . .





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





Diagrama de clases de prototipo
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