DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

C# Design Pattern: Prototype (Portugues)

O padrão Prototype é usado quando você precisa criar novos objetos a partir de uma instância existente, em vez de instanciá-los diretamente. Ele permite copiar (clonar) objetos, o que é útil quando a criação de um novo objeto do zero é complexa ou custosa. Esse padrão é frequentemente usado em situações onde você precisa criar várias instâncias de objetos similares com pequenas variações, como a criação de documentos ou gráficos em um editor, mantendo algumas propriedades comuns.

Exemplo de Código em C#:

// Interface Prototype
public interface IPrototype<T>
{
    T Clonar();
}

// Classe concreta que implementa Prototype
public class Circulo : IPrototype<Circulo>
{
    public int Raio { get; set; }

    public Circulo(int raio)
    {
        Raio = raio;
    }

    public Circulo Clonar()
    {
        // Clona o objeto atual
        return new Circulo(this.Raio);
    }

    public void ExibirDetalhes()
    {
        Console.WriteLine($"Círculo com raio: {Raio}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Criar um círculo original
        Circulo circulo1 = new Circulo(10);
        circulo1.ExibirDetalhes();  // Saída: Círculo com raio: 10

        // Clonar o círculo
        Circulo circulo2 = circulo1.Clonar();
        circulo2.ExibirDetalhes();  // Saída: Círculo com raio: 10

        // Modificar o clone
        circulo2.Raio = 20;
        circulo2.ExibirDetalhes();  // Saída: Círculo com raio: 20
        circulo1.ExibirDetalhes();  // Saída: Círculo com raio: 10
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, a classe Circulo implementa a interface IPrototype, que define o método Clonar. O método Clonar cria uma nova instância de Circulo com as mesmas propriedades do objeto original. O código principal demonstra a criação de um círculo, sua clonagem, e como as mudanças no objeto clonado não afetam o original.

Conclusão:

O padrão Prototype é ideal para criar cópias de objetos de forma eficiente, especialmente quando a criação de novos objetos do zero é complexa ou requer muitos recursos. Ele é útil quando você precisa criar vários objetos similares, permitindo copiar uma instância existente e modificá-la conforme necessário.

Código fonte: GitHub

Top comments (0)