28 de julio de 2014

     El patrón Bridge desacopla una abstracción de su implementación, de forma que cada una de ellas pueda variar independientemente.

Aplicabilidad:
  • Desacoplar abstracciones de sus implementaciones permitiendo el cambio en tiempo de ejecución.
  • Necesidad de extender mediante herencia tanto la abstracción como sus implementaciones.
  • El cambio en la implementación de una abstracción no debería afectar a los clientes.
  • Necesidad de compartir una misma implementación.

Estructura:
En la siguiente imagen podemos ver un diagrama UML de este patrón:



Participantes:
  • Abstracción: Define la interfaz de la abstracción y mantiene la referencia al objeto implementador.
  • Abstracción refinada (AbstraccionRedefinida): Extiende la interfaz definida por la abstracción.
  • Implementador: Define la interfaz para los implementadores concretos. Esta interfaz no tiene porque corresponderse con la interfaz de la abstracción: (Implementador->primitivas, Abstracción->operaciones de alto nivel).
  • Implementador concreto (ImplementadorConcretoA, ImplementadorConcretoB): Implementa la interfaz Implementor definiendo una implementación concreta.

Colaboraciones:
     La abstracción redirige peticiones del cliente al objeto implementador


Concecuencias:
  • Desacoplamiento entre interfaz e implementación:
    • Elimina dependencias de compilación.
    •  Posibilidad de configuración en tiempo de ejecución.
  • Facilita el poder extender independientemente las jerarquías de abstracción e implementación.
  • Oculta los detalles de implementación a los clientes.

Implementación:    
  • Único implementador.
  • Creación del objeto implementador:
    • Si la abstracción conoce la jerarquía de implementadotes, entonces, puede crear el implementador en el constructor en base a sus parámetros.
    • Si la abstracción no conoce la jerarquía de implementadores entonces deberá delegar en otro objeto que se encargue de proporcionarle el implementador concreto, por ejemplo una Factoy.
  • Compartición de implementadores.

Patrones relacionados:
  • Abstract Factory: Permite crear y configurar un "Puente" particular
  • Adapter: Tiene como objetivo hacer trabajar juntas a clases con distinta interfaces, pero en general, se aplica a sistemas que existen. El patrón Bridge se suele aplicar al empezar un diseño, para permitir que las abstracciones e implementadores evolucionen independientemente. 
Subscribe to RSS Feed Follow me on Twitter!