Adapter Design Pattern
The adapter pattern converts the interface of a class into another interface clients expect. The adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.
Real-World Example
• Karthick from India arrived in the UK.
• Karthick has a classic EU charger with a two-part outlet.
• The UK has a standard three-part plug.
How will Karthick charge his phone?
Answer- By using an adapter.
The adapter creates the possibility of connecting two different interfaces (2 plugs). It gets one type of input and produces a different type of output.
When to use?
- Ado .Net SqlAdapter, MySqlAdapter
- Allow a system to use classes of another system that is incompatible with it.
public interface ITarget
{
string GetRequest();
}
class Adadptee
{
public string GetSpecificRequest()
{
return "Specific request";
}
}
class Adapter : ITarget
{
private readonly Adadptee _adadptee;
public Adapter(Adadptee adadptee)
{
this._adadptee = adadptee;
}
public string GetRequest()
{
return $"this is '{this._adadptee.GetSpecificRequest()}";
}
}
static void Main(string[] args)
{
Adadptee adaptee = new Adadptee();
ITarget target = new Adapter(adaptee);
Console.WriteLine(target.GetRequest());
}