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
- Zdefiniuj interfejs poleceń z podpisem metody, takim jak
execute()
. - 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.
- tworzy instancję obiektu polecenia dla każdego odroczonego żądania wykonania.
- przekaż obiekt polecenia od twórcy (znanego jako nadawca) do wywoływacza (znanego jako odbiorca).
- 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…