A PROMOÇÃO DE INVERNO ESTÁ AQUI!
Adapter

Adapter em C#

O Adapter é um padrão de projeto estrutural, que permite a colaboração de objetos incompatíveis.

O Adapter atua como um wrapper entre dois objetos. Ele captura chamadas para um objeto e as deixa reconhecíveis tanto em formato como interface para este segundo objeto.

Complexidade:

Popularidade:

Exemplos de uso: O padrão Adapter é bastante comum no código C#. É frequentemente usado em sistemas baseados em algum código legado. Nesses casos, os adaptadores criam código legado com classes modernas.

Identificação: O adapter é reconhecível por um construtor que utiliza uma instância de tipo abstrato/interface diferente. Quando o adaptador recebe uma chamada para qualquer um de seus métodos, ele converte parâmetros para o formato apropriado e direciona a chamada para um ou vários métodos do objeto envolvido.

Exemplo conceitual

Este exemplo ilustra a estrutura do padrão de projeto Adapter. Ele se concentra em responder a estas perguntas:

  • De quais classes ele consiste?
  • Quais papéis essas classes desempenham?
  • De que maneira os elementos do padrão estão relacionados?

Program.cs: Exemplo conceitual

using System; namespace RefactoringGuru.DesignPatterns.Adapter.Conceptual { // The Target defines the domain-specific interface used by the client code. public interface ITarget { string GetRequest(); } // The Adaptee contains some useful behavior, but its interface is // incompatible with the existing client code. The Adaptee needs some // adaptation before the client code can use it. class Adaptee { public string GetSpecificRequest() { return "Specific request."; } } // The Adapter makes the Adaptee's interface compatible with the Target's // interface. class Adapter : ITarget { private readonly Adaptee _adaptee; public Adapter(Adaptee adaptee) { this._adaptee = adaptee; } public string GetRequest() { return $"This is '{this._adaptee.GetSpecificRequest()}'"; } } class Program { static void Main(string[] args) { Adaptee adaptee = new Adaptee(); ITarget target = new Adapter(adaptee); Console.WriteLine("Adaptee interface is incompatible with the client."); Console.WriteLine("But with adapter client can call it's method."); Console.WriteLine(target.GetRequest()); } } } 

Output.txt: Resultados da execução

Adaptee interface is incompatible with the client. But with adapter client can call it's method. This is 'Specific request.' 

Adapter em outras linguagens

Adapter em C++ Adapter em Go Adapter em Java Adapter em PHP Adapter em Python Adapter em Ruby Adapter em Rust Adapter em Swift Adapter em TypeScript