Treci la conținutul principal

Ce este

Șablonul Mediator mută comunicarea dintre multe obiecte într-un singur loc central. În loc ca fiecare să știe despre 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 mesajul către cameră; camera îl livrează tuturor celorlalți. Intrarea și ieșirea modifică un singur tablou, într-un singur loc.

Toți vorbesc prin cameră

Ana cunoaște doar camera; camera îi cunoaște pe toți. Un singur apel send afișează două linii — ben și cleo primesc mesajul, iar ana nu își primește propriul mesaj înapoi. Regulile de livrare — sari peste expeditor, mai târziu poate mesaje mute sau private — există într-o singură metodă.

Prompt
Scrie un program TypeScript cu șablonul Mediator: o clasă ChatRoom în care utilizatorii intră și care difuzează mesajul unui expeditor către toți ceilalți utilizatori, și o clasă User care cunoaște doar camera. Fă trei utilizatori să intre în cameră și unul dintre ei să trimită un mesaj, afișând ce primește fiecare dintre ceilalți utilizatori.
Ieșire: program TypeScript și rezultatul capturat

Când să îl folosești

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

Evită-l 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 afectează nimic altceva.

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