Adapter - Tensho97/Aprende-a-Aprender GitHub Wiki
Patrón Adapter
Utilidades y Ventajas
Utilidad: Convertir la interfaz de una clase en otra interfaz esperada por los clientes.
Permite que clases con interfaces incompatibles se comuniquen.
**Ventajas: ** Se quiere usar una clase ya existente y su interfaz no se corresponde con la interfaz que se necesita.
Se quiere envolver código no orientado a objeto con forma de clase.
Problema
Se desea usar una clase A (método ejec), que usa la interfaz C, usando como entrada un objeto de la clase B, pero no se puede, ya que la clase B no implementa la Interfaz C.
//interface
Interfaz C{
m1(...)
m2(...)
....
}
//clase a
Class A{
ejec(Interfaz C);
}
//clase b
Class B{
b1(...);
b2(...);
....
}
//lo que se quiere
Class ...{
...
objetoDeA.ejec(objetoDeB);
...
}
Solución
Se construye una clase Adaptadora de B que implementa la interfaz C. Al implementarla, usa un objeto de B y sus métodos.
Partiendo del ejemplo anterior:
//se crea una clase AdapterB que implementa Interfaz C
Clase AdapterB{
AdapterB(B);
m1(...);
m2(...);
....
}
//Por tanto para Usar la clase A en la B:
class ... {
...
objetoDeAdapterB = NEW AdapterB(objetoDeB);
objetoDeA.ejec(objetoDeAdapterB);
...
}
Autor : Miguel