Le Prototype est un patron de conception de création qui permet de cloner des objets - même complexes - sans se coupler à leur classe.
Toutes les classes prototype devraient avoir une interface commune rendant possible la copie des objets, même sans connaître leur classe concrète. Les objets prototype peuvent créer des copies complètes puisqu’ils peuvent accéder aux attributs privés des autres objets de la même classe.
Essayons de comprendre le prototype en utilisant un exemple basé sur le système de fichiers d’un système d’exploitation (SE). Le système de fichier du SE est récursif : les dossiers contiennent des fichiers et des dossiers, qui peuvent eux-mêmes inclure des fichiers et des dossiers, et ainsi de suite.
Chaque fichier/dossier est représenté par une interface inode. L’interface inode possède également la fonction clone.
Les structs file et folder implémentent les fonctions print et clone, car elles sont du type inode. Vous pourrez également remarquer la fonction clone dans file et folder qui retourne une copie correspondante pour chacun d’entre eux. Durant le clonage, nous suffixons le nom de l’attribut avec « _clone ».