Command jest operacyjnym wzorcem projektowym, którego celem jest encapsulacja czynności do wykoniania i ich parametrów. W programach niektóre czynności mogą być wykonywane długo, np. odczytywanie rekordów z bazy danych. Klient, który wykonuje taką metodę na drugim obiekcie niekiedy musi czekać, aż wykonywanie tej metody się zakończy i dopiero wtedy może dalej wykonywać swój kod. Warto w takich sytuacjach skorzystać z wzorca Command. Wzorzec ten określa polecenie jako obiekt, który jest wysyłany od klienta do odbiorcy, co pozwala nam na takie funkcjonalności jak: kolejkowanie poleceń, kontrolowanie historii (nawet z operacją ‚undo’) i temu podobne.

We wzorcu tym uczestniczą aktorzy:

  1. Interfejs Polecenie którego implementują wszystkie konkrente Polecenia, posiadający metodę ‚wykonaj’. Jeżeli potrzeba więcej funkcjonalności, można dodać metody takie jak: ‚wycofaj’ albo ‚zapisuj w logach’.
  2. Konkretne polecenia, implementujące interfejs Polecenie i jego metody. W tych obiektach hermetyzowane są zadania, które muszą wykonać. Tu są również ustalane powiązania między operacjami do wykonaia a odbiorcą, który te operacje musi wykonać.
  3. Klient, który jest odpowiedzialny za stworzenie Polecenia (obiektu) i ustaleniu jego odbiorcy. Następnie tak utworzone pytania zostają przekazane Obiektowi Wykonującemu
  4. Obiekt wywołujący, który przechowuje utworzone przez Klienta Polecenie i w określonym momencie wywołuje metodę ‚wykonaj’
  5. Odbiorca – wie w jaki sposób wykonać operacje niezbędne do realizacji określonego żądania
    Klient wysyłający polecenie, Otrzymujący polecenie , Polecenie i Pośrednik transportujący polecenie od klienta do odbiorcy.

Zobaczmy:

Diagram wzroca:


.