Prototype
Contexte : Spécifier les types d’objets à créer en utilisant une instance prototype, et créer de nouveaux objets en copiant ce prototype.
public abstract class Prototype{ public abstract Prototype Clone();}
public class ConcretePrototype : Prototype{ public int Data { get; set; } public override Prototype Clone() => (ConcretePrototype)MemberwiseClone();}
// Usagevar original = new ConcretePrototype { Data = 42 };var clone = (ConcretePrototype)original.Clone();Console.WriteLine(clone.Data); // 42Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Copie de documents complexes : Un éditeur de document clone un modèle de document (en‑têtes, pieds de page, styles) puis modifie la copie pour un nouveau client.
Exemple : Dans .NET, l’interface ICloneable (bien que non recommandée) est un pattern Prototype. Plus pratiquement, MemberwiseClone est utilisé pour la copie superficielle. Dans les moteurs de jeu, les préfabriqués sont des prototypes.