Modèle de conception de prototype à Golang

Salut les amis! Avec vous Alex et moi continuons notre série d'articles sur l'utilisation des modèles de conception dans le langage Golang .





Il est intéressant de recevoir des commentaires de votre part, de comprendre à quel point ce domaine de connaissance est applicable dans le monde de la langue Golang . Nous avons déjà examiné les modèles: Simple Factory , Singleton et Strategy . Aujourd'hui, je veux envisager un autre modèle de conception - Prototype .





À quoi sert-il?

Il s'agit d'un modèle de conception génératif qui permet de copier des objets sans entrer dans les détails de leur mise en œuvre.





Quel problème résout-il?

Imaginez que vous avez un objet qui doit être copié. Comment faire? Créez un objet vide de la même classe, puis copiez les valeurs de tous les champs de l'ancien objet vers le nouveau un par un. Bien, mais il y a une nuance! Tous les objets ne peuvent pas être copiés de cette manière, car une partie de son état peut être privé, ce qui signifie qu'il est inaccessible au reste du code du programme.





Il y a aussi un autre problème. Le code de copie deviendra dépendant des classes des objets copiés. Après tout, pour parcourir tous les champs d'un objet, vous devez vous lier à sa classe. Pour cette raison, vous ne pourrez pas copier des objets en connaissant uniquement leurs interfaces et non des classes spécifiques.





Quelle est la solution?

Le modèle Prototype demande aux objets copiés eux-mêmes de faire des copies. Il introduit une interface commune pour tous les objets prenant en charge le clonage. Cela permet aux objets d'être copiés sans être liés à leurs classes spécifiques. En général, une telle interface n'a qu'une seule méthode de clonage.





. . , . , , , . , . .





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





Diagramme de classe de prototype
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