Treci la conținutul principal

Ce este

Modelul Mediator mută comunicarea dintre multe obiecte într-un singur loc central. În loc ca fiecare să cunoască pe toți ceilalți (iar n obiecte să însemne n·n legături), fiecare obiect cunoaște doar mediatorul, iar mediatorul dirijează mesajele.


Exemplu: o cameră de chat

Utilizatorii nu păstrează niciodată referințe unii către alții. Un utilizator trimite mesajul către cameră; camera îl livrează tuturor celorlalți. Intrarea și ieșirea din cameră ating o singură listă, într-un singur loc.

Toți vorbesc prin cameră

Ana cunoaște doar camera; camera îi cunoaște pe toți. Regulile de livrare — sari peste expeditor, mai târziu poate mesaje mute sau private — se află într-o singură metodă.

Prompt
Scrie un program Go cu modelul Mediator: un ChatRoom în care intră utilizatorii și care transmite mesajul unui expeditor către toți ceilalți utilizatori, plus tipuri User care cunosc doar camera. Fă trei utilizatori să intre în cameră și pe unul dintre ei să trimită un mesaj, afișând ce primește fiecare dintre ceilalți utilizatori.
Ieșire: program Go și rezultatul capturat

Când să îl folosești

Folosește-l când multe obiecte se coordonează, iar rețeaua de cine-cui-îi-spune devine deasă — sisteme de chat, câmpuri de formular care se activează și se dezactivează reciproc, coordonare în stilul traficului aerian.

Renunță la el pentru două sau trei obiecte cu legături simple. Un mediator între două părți este un intermediar pe care nu l-a angajat nimeni.


Avantaje și dezavantaje

Avantaje: participanții rămân simpli și reutilizabili; regulile de coordonare se citesc într-un singur loc; adăugarea unui participant nu atinge nimic altceva.

Dezavantaje: mediatorul crește — poate deveni pe nesimțite tipul uriaș care știe tot; tot traficul printr-un singur punct poate ascunde costuri de performanță.