jeudi 14 mars 2024

Design pattern: Prototype

Le design pattern Prototype est un patron de conception créatif qui permet de créer de nouveaux objets en copiant un objet existant, appelé prototype. L'idée est de créer de nouveaux objets sans dépendre de leur classe concrète, en utilisant une copie de l'objet existant comme point de départ.

En C#, le Prototype est souvent mis en œuvre en utilisant le mécanisme de clonage, soit via l'interface `ICloneable`, soit en implémentant une méthode spécifique de clonage.

Voici un exemple simple d'implémentation du design pattern Prototype en C# :

```csharp

using System;

// Interface ou classe de base du prototype

public interface IPrototype<T>

{

T Clone();

}

// Exemple de classe concrète

public class ConcretePrototype : IPrototype<ConcretePrototype>

{

public int Id { get; set; }

public string Name { get; set; }

public ConcretePrototype(int id, string name)

{

Id = id;

Name = name;

}

// Méthode de clonage

public ConcretePrototype Clone()

{

// Utilisation du constructeur de copie ou du clonage profond selon les besoins

return new ConcretePrototype(Id, Name);

}

public void DisplayInfo()

{

Console.WriteLine($"Id: {Id}, Name: {Name}");

}

}

class Program

{

static void Main()

{

// Création d'un prototype

ConcretePrototype prototype = new ConcretePrototype(1, "Prototype");

// Clonage du prototype

ConcretePrototype clonedObject = prototype.Clone();

// Modification du clone

clonedObject.Name = "Cloned";

// Affichage des informations

Console.WriteLine("Original Object:");

prototype.DisplayInfo();

Console.WriteLine("\nCloned Object:");

clonedObject.DisplayInfo();

}

}

```

Dans cet exemple, `ConcretePrototype` implémente l'interface `IPrototype` avec une méthode de clonage (`Clone`). Lorsque nous créons un objet `ConcretePrototype`, nous pouvons le cloner en utilisant la méthode `Clone`, ce qui donne une copie indépendante de l'objet original. Ce modèle est particulièrement utile lorsque la création d'un nouvel objet est plus complexe ou coûteuse que la copie d'un objet existant.

Aucun commentaire:

Enregistrer un commentaire