Treci la conținutul principal

Ce este

Șablonul Mediator mută comunicarea dintre multe obiecte într-un singur loc central. În loc ca fiecare să cunoască pe toți ceilalți (și 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 către cameră; camera livrează tuturor celorlalți. Intrarea și ieșirea ating o singură listă, într-un singur loc.

Toți vorbesc prin intermediul camerei

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

Prompt
Scrie un script PHP cu șablonul Mediator: un ChatRoom la care utilizatorii se alătură și care difuzează mesajul unui expeditor către toți ceilalți utilizatori, plus o clasă User care cunoaște doar camera. Fă trei utilizatori să se alăture, unul dintre ei să trimită un mesaj și afișează ce primește fiecare dintre ceilalți utilizatori.
Ieșire: script PHP

Când să îl folosești

Folosește-l atunci când multe obiecte se coordonează și rețeaua de cine-anunță-pe-cine 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 nimeni nu l-a angajat.


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 clasa uriașă care știe tot; tot traficul printr-un singur punct poate ascunde costuri de performanță.