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.