Stronę tą wyświetlono już: 4194 razy
Opis wzorca projektowego mediator
Wzorzec projektory mediator należy do czynnościowych wzorców projektowych. Jego celem jest udostępnienie interfejsu pośredniczącego w przekazywaniu informacji pomiędzy różnymi nie połączonymi bezpośrednio z sobą obiektami klas, które dziedziczą po wspólnym interfejsie. Klasa pośrednicząca zawiera tablicę interfejsów klas.
Przykład diagramu UML wzorca projektowego mediator
Na poniższym diagramie UML widoczna jest klasa Mediator, która dziedziczy po interfejsie iMediator. Klasa ta zawiera tablicę asocjacyjną umożliwiającą przechowywanie pary danych klucz (std::string) → wartość (iMessage*). Wysłanie wiadomości odbywa się za pomocą metody tej klasy sendMessage zaś dodawanie nowych interfejsów odbywa się za pomocą metody registerObject.
Klasy User i Bot dziedziczą po wspólnym interfejsie iMessage. W moim przypadku dodatkowo zamieściłem wewnątrz interfejsu iMessage pole zawierające wskaźnik na interfejs iMediator. Dzięki temu obiekt klasy sam siebie próbuje zarejestrować oraz (w przypadku obiektów klasy bot) wysyłać automatycznie odpowiedzi.
Przykładowa implementacja wzorca projektowego mediator w C++
Przykładowy wynik działania programu:
Yury is registered R2D2 is registered What you want to do: Send a message [0] Quit program [not 0] 0 Send to who: R2D2 Message: what's your name R2D2 get some message from Yury what's your name Yury get some message from R2D2 My name is R2D2 What you want to do: Send a message [0] Quit program [not 0] 0 Send to who: R2D2 Message: how old are you R2D2 get some message from Yury how old are you Yury get some message from R2D2 I'm 50 years old Send a message [0] Quit program [not 0] 0 Send to who: R2D2 Message: what you doing R2D2 get some message from Yury what you doing Yury get some message from R2D2 I don't understand I can ansver only on questions bellow: what's your name how old are you What you want to do: Send a message [0] Quit program [not 0]