Mediator

Przeznaczenie

  • Definiuje obiekt kapsułkujący informacje o tym, jak obiekty współdziałają

  • Przyczynia się do rozluźnienia powiązań między obiektami, ponieważ obiekty nie odwołują się do siebie wprost

  • Zapewnia separację współpracujących obiektów od systemu

  • Umożliwia niezależną zmianę sposobu porozumiewania się obiektów

Kontekst

  • Zbiór obiektów porozumiewa się w dobrze zdefiniowany, lecz skomplikowany sposób. Wynikające stąd zależności są nieuporządkowane i trudne do zrozumienia

Problem

  • Chcemy wprowadzić obiekt pośredniczący w komunikacji między obiektami

Struktura

_images/Mediator.png

Uczestnicy

Mediator – definiuje interfejs porozumiewania się z obiektami Colleague

ConcreteMediator

  • implementuje wspólne zachowanie przez koordynowanie współpracy obiektów Colleague

  • zna i koordynuje swoich współpracowników

Colleague

  • każda klasa współpracownika zna swój obiekt Mediator

  • każdy współpracownik porozumiewa się ze swoim mediatorem zawsze wtedy, kiedy zwykle bezpośrednio porozumiewałby się z innym współpracownikiem

Współpraca

  • Współpracownicy wysyłają żądania do obiektu Mediator i otrzymują je od niego

  • Mediator implementuje wspólne zachowanie, przesyłając żądania między odpowiednimi współpracownikami

Podsumowanie

  1. Hermetyzuje proces komunikacji między obiektami.

  2. Definiuje luźne powiązania między obiektami.

  3. Umożliwia łatwą reimplementację sposobu współpracy obiektów typu Colleague, bez konieczności definiowania klas pochodnych dla nich.