Intento:
Definire un oggetto che incapsula il modo in cui gli oggetti interagiscono fra loro. Il pattern Mediator promuove il basso livello di accoppiamento fra gli oggetti mantenendo i riferimenti fra gli oggetti stessi ed in più lascia la possibilità di variare il loro modo di interagire.
Applicabilità:
E’ utile sfruttare Mediator quando:
- un insieme di oggetti comunica in un modo ben definito ma complesso, in questo caso le interdipendenze fra oggetti sono non strutturate e difficili da comprendere.
- Il riutilizzo di un oggetto è complesso perché contiene riferimenti e comunica con molti altri oggetti.
- un comportamento che deve essere distribuito fra molte classi potrebbe essere personalizzato senza utilizzare una serie infinita di sottoclassi
Partecipanti:
- Mediator → definisce una interfaccia per comunicare con l’oggetto Colleague
- ConcreteMediator → implementa il comportamento di collaborazione al fine di coordinare gli oggetti Colleague, in più mantiene e conosce i suoi “colleghi”
- ColleagueClasses → ogni classe di tipo Colleague conosce il proprio oggetto Mediator, ed ogni collega comunica con il proprio mediatore quando vorrebbe interagire con un altro collega.
Conseguenze:
Ecco le conseguenze dello sfruttamento del pattern Mediator:
- Viene limitato il numero di sottoclassi; difatti il mediatore localizza i comportamenti che altrimenti sarebbero stati distribuiti attraverso più oggetti
- Disaccoppia i colleghi, difatti viene adottato il basso livello di accoppiamento fra oggetti
- Semplifica il protocollo di comunicazione fra oggetti, infatti i legami molti a molti fra oggetti si trasformano in legami uno a molti tra mediatore ed oggetti
- Astrae come gli oggetti cooperano, difatti il mediatore si basa solo sulla cooperazione fra oggetti senza conoscere il loro comportamento
- Viene centralizzato il controllo. Infatti viene tradotta la complessità dell’interazione fra oggetti nella complessità del mediatore









