Wzorzec projektowy polecenia

Intent

  • Enkapsuluje żądanie jako obiekt, umożliwiając w ten sposób parametryzację różnych żądań, żądań kolejki lub dziennika oraz operacji obsługujących.
  • Promuj „wywołanie metody na obiekcie” do pełnego stanu obiektu
  • obiektowe wywołanie zwrotne

Problem

musi wysyłać żądania do obiektów bez wiedzy o żądanej operacji lub odbiorcy żądania.

dyskusja

polecenie oddziela obiekt, który wywołuje operację od onethat wie, jak ją wykonać. Aby to osiągnąć, designercreates abstrakcyjna klasa bazowa, która mapuje odbiornik (obiekt) z akcją (wskaźnik do funkcji składowej). Klasa bazowa zawiera metodęexecute(), która po prostu wywołuje akcję na odbiorniku.

wszyscy klienci obiektów Command traktują każdy obiekt jako ” czarną skrzynkę „poprzez wywołanie wirtualnej metody obiektu execute() zawsze, gdy klient wymaga”usługi” obiektu.

Klasa polecenia zawiera pewien podzbiór następujących elementów: obiekt, amethod, który ma być zastosowany do obiektu, oraz argumenty, które mają być przekazane, gdy metoda jest zastosowana. Następnie metoda polecenia „execute”powoduje połączenie elementów.

sekwencje obiektów poleceń mogą być łączone w polecenia złożone (lub makra).

struktura

klient tworzący polecenie nie jest tym samym klientem, który wykonuje polecenie. Ta separacja zapewnia elastyczność w taktowaniu i sekwencjonowaniu poleceń. Materializacja poleceń jako obiektów oznacza, że mogą być one umieszczane, ustawiane, współdzielone, ładowane do tabeli i w inny sposób instrumentowane lub manipulowane jak każdy inny obiekt.

Obiekty poleceń mogą być traktowane jako” tokeny”, które są tworzone przez jednego klienta, który wie, co należy zrobić, i przekazywane do innego klienta, który ma do tego zasoby.

przykład

wzorzec poleceń umożliwia Hermetyzowanie żądań jako obiektów,umożliwiając tym samym parametryzowanie klientów różnymi żądaniami.”Czek” w restauracji jest przykładem wzorca poleceń. Waiteror kelnerka bierze zamówienie lub polecenie od klienta i encapsulatesthat zamówienie pisząc go na czeku. Zamówienie jest następnie ustawiane w kolejce do krótkiego kucharza. Zauważ, że pad „czeków” używany przez każdego kelnera nie jest zależny od menu, a zatem mogą obsługiwać polecenia doook wiele różnych elementów.

Lista kontrolna

  1. Zdefiniuj interfejs poleceń z podpisem metody, takim jak execute().
  2. Utwórz jedną lub więcej klas pochodnych, które zawierają pewien podzbiór następujących elementów: obiekt „receiver”, metoda do wywołania, argumenty do przekazania.
  3. tworzy instancję obiektu polecenia dla każdego odroczonego żądania wykonania.
  4. przekaż obiekt polecenia od twórcy (znanego jako nadawca) do wywoływacza (znanego jako odbiorca).
  5. fakturujący decyduje, kiedy execute().

zasady kciuka

  • Łańcuch odpowiedzialności, dowodzenia, mediatora i obserwatora, dotyczy sposobu odsprzęgnięcia nadawców i odbiorników, ale z różnymi kompromisami.Polecenie zwykle określa połączenie nadawca-odbiorca z asubclass.
  • Chain Of Responsibility może używać polecenia do reprezentowania żądań jako obiektów.
  • polecenie i Memento działają jak magiczne żetony, które mogą być przekazywane i wywoływane w późniejszym czasie. W poleceniu token reprezentuje żądanie; inMemento reprezentuje wewnętrzny stan obiektu w określonym czasie. Polimorfizm jest ważny dla polecenia, ale nie dla Memento, ponieważ jego interfejs jest tak wąski, że memento może być przekazywane tylko jako avalue.
  • polecenie może używać Memento do utrzymywania stanu wymaganego do cofnięcia współpracy.
  • Makrokomandów można zaimplementować za pomocą Composite.
  • polecenie, które musi zostać skopiowane przed umieszczeniem na liście historii, działa jako prototyp.
  • dwa ważne aspekty wzorca poleceń: separacja interfejsu (Wywoływacz jest izolowany od odbiornika), separacja czasu (storesa ready-to-go processing request, który zostanie podany później).

Wesprzyj naszą bezpłatną stronę internetową i właścicielem ebooka!

  • 22 szczegółowe omówienie wzorców projektowych i 8 zasad
  • 406 przejrzyste, czytelne i wolne od żargonu strony
  • 228 przejrzyste i pomocne ilustracje i diagramy
  • archiwum z przykładami kodu w 4 językach
  • wszystkie obsługiwane urządzenia: formaty EPUB/MOBI/PDF

dowiedz się więcej…

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.