Wzorce zachowań

All lectures for PL purposes
Poziom 1, Lekcja 494
Dostępny

Iterator

Iterator to behawioralny wzorzec projektowy. Reprezentuje obiekt, który umożliwia sekwencyjny dostęp do elementów obiektu zagregowanego bez używania opisów każdego z zagregowanych obiektów.

Iterator

Na przykład elementy takie jak drzewo, połączona lista, tablica skrótów i tablica mogą być przeglądane (i modyfikowane) za pomocą obiektu Iterator.

Iteracja po elementach jest wykonywana przez obiekt iteratora, a nie przez samą kolekcję. Upraszcza to interfejs i implementację kolekcji oraz promuje bardziej logiczne oddzielenie problemów.

Cechą w pełni zaimplementowanego iteratora jest to, że kod korzystający z iteratora może nie wiedzieć nic o typie iterowanego agregatu.

To podejście jest stosowane bardzo często. Na przykład wysyłasz zapytanie SQL do bazy danych, a w odpowiedzi zwraca ona iterator (w języku SQL jest to zwykle nazywane kursorem). Za pomocą wynikowego iteratora możesz pobierać wiersze z odpowiedzi SQL jeden po drugim.

Komenda

Polecenie to behawioralny wzorzec projektowy używany w programowaniu obiektowym, który reprezentuje akcję. Obiekt polecenia zawiera samą akcję i jej parametry.

Komenda

Aby wywołać metodę, zwykle potrzebujesz:

  • odniesienie do obiektu
  • nazwa metody (odniesienie do metody)
  • wartości parametrów metody
  • odniesienie do kontekstu, który zawiera użyte obiekty

Wszystkie te dane należy spakować w jeden obiekt - Polecenie ( polecenie ).

Ale to nie wszystko: ktoś przecież musi wykonać polecenie. Zatem ten wzorzec zawiera jeszcze cztery jednostki: polecenia ( polecenie ), odbiornik polecenia ( receiver ), wywołujący polecenie ( invoker ) i klienta ( client ).

ObiektKomendawie o odbiorniku i wywołuje metodę odbiornika. Wartości parametrów odbiornika są przechowywane w poleceniu. Dzwoniący (wywołujący) wie, jak wykonać polecenie i ewentualnie śledzi wykonane polecenia. Dzwoniący (wywołujący) nie wie nic o konkretnym poleceniu, wie tylko o interfejsie.

Oba obiekty (obiekt wywołujący i kilka obiektów poleceń) należą do obiektu klienta. Klient decyduje, które polecenia wykonać i kiedy. Aby wykonać polecenie, przekazuje obiekt polecenia wywołującemu (wywołującemu).

Korzystanie z obiektów poleceń ułatwia tworzenie współdzielonych komponentów, które trzeba delegować lub wykonywać wywołania metod w dowolnym momencie, bez konieczności znajomości metod klasowych lub parametrów metod.

Użycie obiektu wywołującego (invoker) pozwala na prowadzenie rejestru wykonanych poleceń bez konieczności wiedzy klienta o tym modelu rozliczania (takie rozliczanie może być przydatne np. do implementacji poleceń cofania i ponawiania).

Na przykład piszesz program, który umożliwia wykonywanie różnych zadań zgodnie z harmonogramem. Twój program z jednej strony śledzi zadania i zarządza ich uruchomieniem, z drugiej strony może mieć kilka executorów, z których każdy może wykonywać polecenia własnego typu. Na przykład wysyłanie SMS-ów, wysyłanie listów, wysyłanie wiadomości do Telegramu itp.

Obserwator

Obserwator to behawioralny wzorzec projektowy. Implementuje mechanizm klasy, który pozwala obiektowi tej klasy otrzymywać powiadomienia o zmianach stanu innych obiektów i tym samym je obserwować.

Obserwator

Klasy, które subskrybują inne klasy, nazywane są podmiotami , a klasy subskrybujące nazywane są obserwatorami .

Podczas implementacji wzorca Observer powszechnie używane są następujące klasy:

  • Observable – interfejs definiujący metody dodawania, usuwania i powiadamiania obserwatorów;
  • Obserwator – interfejs, za pośrednictwem którego obserwator otrzymuje powiadomienie;
  • ConcreteObservable to konkretna klasa, która implementuje interfejs Observable ;
  • ConcreteObserver to konkretna klasa, która implementuje interfejs Observer .

Wzorzec Obserwatora jest używany, gdy system:

  • istnieje co najmniej jeden obiekt, który wysyła komunikaty;
  • istnieje co najmniej jeden odbiorca wiadomości, a ich liczba i skład mogą ulec zmianie w trakcie działania aplikacji;
  • unika silnego sprzężenia oddziałujących klas.

Wzorzec ten jest często wykorzystywany w sytuacjach, w których nadawca wiadomości nie jest zainteresowany tym, co odbiorca robi z przekazaną mu informacją.

Gość

Gość to behawioralny wzorzec projektowy opisujący operację wykonywaną na obiektach innych klas. W przypadku zmiany gościa nie ma potrzeby zmiany obsługiwanych klas.

Szablon demonstruje klasyczną technikę odzyskiwania utraconych informacji o typie bez uciekania się do podwójnego wysyłania w dół.

Gość

Musisz wykonać kilka rozłączonych operacji na wielu obiektach, ale musisz unikać zanieczyszczania ich kodu. I nie ma sposobu ani chęci sprawdzania typu każdego węzła i rzutowania wskaźnika na właściwy typ przed wykonaniem żądanej operacji.

Z szablonu należy skorzystać, jeżeli:

  • istnieją różne obiekty różnych klas z różnymi interfejsami, ale trzeba na nich wykonywać operacje zależne od konkretnych klas;
  • na konstrukcji konieczne jest wykonanie różnych operacji komplikujących konstrukcję;
  • często dodawane są nowe operacje na strukturze.

mediator

Mediator to behawioralny wzorzec projektowy, który umożliwia interakcję wielu obiektów przy jednoczesnym zachowaniu luźnego powiązania i unikaniu potrzeby jawnego odnoszenia się obiektów do siebie.

Mediator

Wzorzec Mediator pozwala zapewnić interakcję wielu obiektów, jednocześnie tworząc luźne powiązania i eliminując potrzebę jawnego odnoszenia się obiektów do siebie.

Mediator definiuje interfejs do wymiany informacji z obiektamiWspółpracownicy, Poszczególny mediator koordynuje działania obiektówWspółpracownicy.

Każda klasa Koledzy wie o swoim obiekcieMediator, wszyscy Koledzy wymieniają informacje tylko z pośrednikiem, pod jego nieobecność musieliby wymieniać informacje bezpośrednio.

Współpracownicywysyłać żądania do Sprzedawcy/span> i otrzymywać od niego żądania. Mediator wdraża zachowanie oparte na współpracy, przekazując każdą prośbę do jednego lub więcejWspółpracownicy.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION