Patron Adapter

INTRODUCCIÓN:

El Patrón adapter convierte la interfaz de una clase en otra distinta que es la que esperan los clientes. Permite que cooperen las clases que de otra manera no podrían por tener clases incompatibles.

Nombre del Patrón:
Adapter

Clarificación del Patrón:
Estructural

Intención:
Sirve como intermediario entre dos clases, convirtiendo las interfases de una clase que pueda ser utilizada por otra.

También conocido como:
wrapper (Envoltorio)

Motivación:

A veces una clase es diseñada para que sea reusable, pero no lo es, porque la interfase no con concuerda con la interfase que una aplicación requiere.


Aplicabilidad:

El patron adapter debe ser utilizado cuando:

  • Desee utilizar un objeto en un entorno que espera una interfaz distinta de la ofrecida por el objeto.
  • Deba realizar una traduccion entre las interfaces de varios objetos.
  • Un objeto deba actuar como intermediario para un grupo de clases, y solo es porsible saber en tiempo de ejecucion que clase sera utilizada.

Estructura:




Participantes:
  • Target: Define el dominio de la interfaz que el cliente usa.
  • Cliente: Colabora con los onjetos conformando la interfaz Target.
  • Adaptee: Define la Interfaz existente que necesita adaptacion.
  • Adapter: Adapta la Interfaz Adaptee para usar en Target.


Colaboraciones:
El cliente llama a las operaciones en la instancia del Adapter. Luego, el Adapter llama al Adaptee (el adaptado) y lleva a cabo las operaciones pedidas.


Consecuencias:
El patron Adapter ofrece una gran oportunidad para la reutilizacion de codigo, permitiendo que interactuen dos o mas objetos que supuestamente son incompatibles. Sin embargo, es necesario algun tipo de planificacion y prevision para poder desarrollar un framework lo suficientemente flexible como para que pueda ser adaptado convenientemente. Este problema tiene dos aspectos diferenciados: la estructura de las llamadas a funciones y los argumentos de traduccion.


En caso en el que haya falta de correspondencia funcional entre las llamadas de los frameworks y el adaptee, el adapter necesita gestionar los requerimientos de las llamadas del adaptee, lo cual puede ser realizado mediante la invocacion de cualquier metodo de configuracion antes de la llamada al framework.

Otro desafio para el patron Adapter es la transferencia de argumentos, debido a que los argumentos recibidos no son siempre compatibles entre el framework y el Adaptee. en esos casos, el objeto Adapter normalmente crea los objetos apropiados cuando no hay una correspondencia directa entre los dos entornos, o encapsula un objeto para que pueda ser utilizado por el Adaptee.

Implementacion:
Crear una nueva clase que será el Adaptador, que extienda del componente existente e implemente la interfaz obligatoria. De este modo tenemos la funcionalidad que queríamos y cumplimos la condición de implementar la interfaz.


Patrones Relacionados:

Bridge : Tiene una estructura similar al Adapter, pero un intento diferente : Su proposito es separar la interfase de su implementación asi esta puede variar facilmente y de forma independiente. El proposito del Adapter es el cambio de interfase de un objeto existente.

Decorator : Agrega resonsabilidades a un objeto dinamicamente sin cambiar su interfase .Un Decorator en cambio es mas transparente a la aplicación que un Adapter, como consecuencia Soporta composición recursiva, lo cual no es posible con el patron Adapter.

Proxy : Define un lugar para otro objeto para controlar el acceso y no cambia su interfase.





Hora Bogotá Colombia