Olá, Maurício
Vejo que você pratica bastante a construção de design patterns para problemas do dia-a-dia, e isso é muito importante!
Sobre o seu código, vamos dar uma olhada em como seu Client
instancia e utiliza o Adapter
:
IAparelho a = new Liquidificador();
Console.WriteLine(a.On());
Console.WriteLine(a.Off());
Dando uma olhada na classe Liquidificador
, acho que essa implementação não está seguindo o padrão Adapter
.
Um Adapter serve para adaptar um componente incompatível para uma interface que ele não implementa.
Um caso de Adapter seria, por exemplo:
- PROBLEMA: Um aparelho chamado
TVImportada
tem plug com pino chato, mas esse adaptador não funciona com a interface da tomada ABNT brasileira (interface ITomadaABNT
. Esse aparelho precisa ser adaptado, ou seja, ele precisa ser um Adaptee. - SOLUÇÃO: usar um adaptador, Adapter, que será um "adaptador benjamin", classe
AdaptadorBenjamin
, que implementa ITomadaABNT
e faz referência (depende de) à classe TVImportada
.
public interface ITomadaABNT
{
void PlugarPinosRedondos();
}
public class TVImportada : ITomadaPinoChato
{
void PlugarPinosChatos()
{
.
.
.
}
}
public class AdaptadorBenjamin: ITomadaABNT
{
private readonly ITomadaPinoChato aparelhoAdaptado;
public AdaptadorBenjamin()
{
aparelhoAdaptado = new TVImportada();
}
public void PlugarPinosRedondos()
{
aparelhoAdaptado .PlugarPinosChatos();
}
.
.
.
}
class Program
{
static void Main(string[] args)
{
ITomadaABNT benjamin = new AdaptadorBenjamin();
benjamin.PlugarPinosRedondos();
}
}
O que acha?