Patrón "intermediario"
Descripción
Supongamos una ventana con numerosos componentes gráficos (widgets) que tienen fuertes dependencias entre
si. Por ejemplo, reglas del tipo "si el campo de edición E2 está relleno, entonces inhabilito el botón
B1 y el campo de edición E3".
El mediador o intermediario encapsula la forma en que interaccionan un conjunto de objetos ("colegas").
Es el especialista que define las interdependencias entre ellos. Favorece un bajo
acoplamiento, ya que evita que los objetos se referencien unos a otros de forma explícita.
Permite variar la interacción sin tocar los colegas, por tanto favorece la reutilización.
Ventajas:
- Evita crear subclases
- Desacopla a los colegas
- Simplifica los protocolos entre las clases
- Abstrae el cómo cooperan los objetos
- Centraliza el control en el mediador: clase difícil de mantener
Para la implementación:
- No hay necesidad de definir una clase abstracta Mediator si los colegas trabajan con un único mediador
- Los colegas deben comunicarse con el mediador cuando un evento de interés ocurre, esta
comunicación puede hacerse con un Observer o un interfaz de notificación (ViewManager de Smalltalk-V).
- Cada colega tiene una referencia al mediador y de esta manera le pueden informar de los cambios
realizados. Por ejemplo, una lista informa al mediador del cambio de item seleccionado; el
mediador puede responder solicitando el texto seleccionado en la lista y mandándolo a un campo de
texto. Ver el siguiente diagrama:

Volver al índice