Aller au contenu

Adapter

Contexte : Convertir l’interface d’une classe en une interface attendue par les clients. Adapter permet à des classes de fonctionner ensemble alors qu’elles ne le pourraient pas autrement à cause d’interfaces incompatibles.

// Adaptee
public class Adaptee
{
public string SpecificRequest() => "Specific response";
}
// Target interface
public interface ITarget
{
string Request();
}
// Adapter
public class Adapter : ITarget
{
private readonly Adaptee _adaptee;
public Adapter(Adaptee adaptee) => _adaptee = adaptee;
public string Request() => _adaptee.SpecificRequest();
}
// Usage
Adaptee adaptee = new();
ITarget target = new Adapter(adaptee);
Console.WriteLine(target.Request());

Fournisseurs de bases de données : Une application utilise une interface commune IDatabase. Des adaptateurs pour MySQL, PostgreSQL et SQL Server convertissent leurs API natives en IDatabase.

Exemple : Dans .NET, SqlDataAdapter remplit un DataSet – il adapte le DataReader SQL à un conteneur de données déconnecté. De même, ConfigurationManager adapte différentes sources de configuration.