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