DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

C# Design Pattern: Adapter (Portugues)

O padrão Adapter é útil quando você precisa que duas classes com interfaces incompatíveis trabalhem juntas. Ele cria uma “ponte” entre as classes, convertendo a interface de uma classe em outra esperada por um cliente. Isso é útil em situações como integrar uma nova funcionalidade ou biblioteca a um sistema existente, onde as interfaces não são compatíveis, ou quando você deseja reutilizar uma classe existente sem modificá-la diretamente.

Exemplo de Código em C#:

// Classe existente (incompatível com o cliente)
public class TomadaEuropeia
{
    public void ConectarPlugEuropeu()
    {
        Console.WriteLine("Plug europeu conectado à tomada europeia.");
    }
}

// Interface do cliente
public interface ITomada
{
    void Conectar();
}

// Adapter que torna a classe TomadaEuropeia compatível com a interface ITomada
public class TomadaAdapter : ITomada
{
    private TomadaEuropeia _tomadaEuropeia;

    public TomadaAdapter(TomadaEuropeia tomadaEuropeia)
    {
        _tomadaEuropeia = tomadaEuropeia;
    }

    public void Conectar()
    {
        // Adaptando a chamada
        _tomadaEuropeia.ConectarPlugEuropeu();
    }
}

// Cliente que usa a interface ITomada
class Program
{
    static void Main(string[] args)
    {
        // Cliente precisa de uma tomada compatível com ITomada
        ITomada tomada = new TomadaAdapter(new TomadaEuropeia());
        tomada.Conectar();  // Saída: Plug europeu conectado à tomada europeia.
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, temos a classe TomadaEuropeia, que possui um método específico, mas incompatível com a interface ITomada, que o cliente espera. O TomadaAdapter é criado para fazer essa ponte entre o cliente e a classe TomadaEuropeia, adaptando a chamada de Conectar() para ConectarPlugEuropeu(). O código principal demonstra como o cliente consegue usar o adaptador para trabalhar com a tomada europeia sem precisar alterá-la diretamente.

Conclusão:

O padrão Adapter é útil para integrar classes com interfaces incompatíveis, permitindo que trabalhem juntas sem modificações nas suas implementações originais. Ele é ideal para cenários onde você deseja reutilizar ou integrar novas funcionalidades a sistemas existentes sem quebrar ou reescrever o código já desenvolvido.

Código fonte: GitHub

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay