Mediator (patrón de diseño)
De Wikipedia, la enciclopedia libre
Un Mediator es un patrón de diseño que coordina las relaciones entre sus asociados. Permite la interacción de varios objetos, sin generar acoples fuertes en esas relaciones.
Tabla de contenidos |
[editar] Intención
Definir un objeto que encapsule como interactúa un conjunto de objetos.
[editar] Motivacion
Cuando muchos objetos interactúan con otros objetos, se puede formar una estructura muy compleja, con objetos con muchas conexiones con otros objetos. En un caso extremo cada objeto puede conocer a todos los demás objetos. Para evitar esto el patrón Mediator encapsula el comportamiento de todo un conjunto de objetos en un solo objeto.
[editar] Aplicabilidad
Usar el patrón Mediator cuando:
- Un conjunto grande de objetos se comunica de una forma bien definida, pero compleja.
- Reusar un objeto se hace difícil por que se relaciona con muchos objetos.
- El comportamiento de muchos objetos que esta distribuido entre varias clases, puede resumirse en una o varias por subclasificación..
[editar] Estructura
Estructura del patrón Mediator
[editar] Participantes
- Mediator (mediador): define una interface para comunicarse con los objetos colegas.
- ConcreteMediator ("mediador concreto"): Implementa el comportamiento cooperativo entre los colegas (como se comunican entre ellos). Además los conoce y mantiene.
- Colleagues ("colegas"): Cada colega conoce su mediador, y usa a este para comunicarse con otros colegas.
[editar] Colaboraciones
Los colegas envían y reciben requerimientos (requests) de un objeto mediador. El mediador implementa como se comunican los colegas.
[editar] Consecuencias
El patrón Mediator tiene los siguientes beneficios y desventajas:
- Desacopla a los colegas: el patrón Mediator promueve bajar el acoplamiento entre colegas. Se puede variar y reusar colegas y mediadores independientemente
- Simplifica la comunicación entre objetos: Los objetos que se comunican de la forma "muchos a muchos" puede ser remplazada por una forma "uno a muchos" que es menos compleja y más elegante. Además esta forma de comunicación es más fácil de entender.
- Abstrae como los objetos cooperan: Haciendo a la mediación un concepto independiente y encapsulandolo en un objeto permite enfocar como los objetos interactúan. Esto ayuda a clarificar como los objetos se relacionan en un sistema.
- Centraliza el control: El mediador es el que se encarga de comunicar a los colegas, este puede ser muy complejo, difícil de entender y modificar
Patrones de Diseño |
---|
Creacionales: Abstract Factory | Builder | Factory Method | Prototype | Singleton | Secreton |
Estructurales: Adapter | Bridge | Composite | Decorator | Facade | Flyweight | Proxy |
De Comportamiento: Chain of Responsibility | Command | Interpreter | Iterator | Mediator | Memento | Observer | State | Strategy | Template Method | Visitor |