Wpisany przez Kamil Dworak,
22 września 2010 20:24
Polecenie (ang. command) - czynnościowy wzorzec projektowy. Jego celem jest enkapsulacja żądań użytkownika (wraz z ich parametrami) do postaci obiektów, które nazywamy poleceniami.
Obiekty te muszą być podporządkowane pod ten sam interfejs, zawierający jedną metodę, wykonującą określone żądanie, ale czy tylko jedno? Oczywiście, że nie, co widać w załączonym przykładzie (multicasting), tam odpalamy aż trzy żądania. Dodatkowo mamy obiekt wywołujący (rozkazujący) oraz pewną liczbę odbiorców, przyjmujących i realizujących zlecone polecenia. Nie wiemy kto i jakie operacje wykonuje.
Czasami też taki interfejs posiada dodatkową metodę, która cofa ostatnio wykonane żądanie, przywracając poprzedni porządek. Wraz z multicastingiem, mamy tutaj potężny mechanizm odzyskiwania poprzedniego stanu. Jest to idealne narzędzie do tworzenia jakichkolwiek transakcji oraz rejestrów. Metody mogą być wywoływane synchronicznie (stosowane do różnego rodzaju kolejek żądań) lub asynchronicznie (równolegle, przy pomocy wielowątkowości).
Diagram dla przykładu:
Obiekty te muszą być podporządkowane pod ten sam interfejs, zawierający jedną metodę, wykonującą określone żądanie, ale czy tylko jedno? Oczywiście, że nie, co widać w załączonym przykładzie (multicasting), tam odpalamy aż trzy żądania. Dodatkowo mamy obiekt wywołujący (rozkazujący) oraz pewną liczbę odbiorców, przyjmujących i realizujących zlecone polecenia. Nie wiemy kto i jakie operacje wykonuje.
Czasami też taki interfejs posiada dodatkową metodę, która cofa ostatnio wykonane żądanie, przywracając poprzedni porządek. Wraz z multicastingiem, mamy tutaj potężny mechanizm odzyskiwania poprzedniego stanu. Jest to idealne narzędzie do tworzenia jakichkolwiek transakcji oraz rejestrów. Metody mogą być wywoływane synchronicznie (stosowane do różnego rodzaju kolejek żądań) lub asynchronicznie (równolegle, przy pomocy wielowątkowości).
Diagram dla przykładu:
- tworzymy obiekt wywołujący trener oraz pewną grupę zawodników,
- implementujemy polecenia przypisując nim wybranych wykonawców, czyli naszych zawodników,
- ustawiamy nasze żądanie w obiekcie wywołującym, a następnie wykonujemy rozkaz (odpala się metoda wykonaj() ),
- gdy już mamy dosyć i zdecydowaliśmy, że to już koniec, wywołujemy metodę cofnij (wracamy do poprzedniego stanu),
- na sam koniec implementujemy tablicę, w której znajdują się wszystkie zaimplementowane dyscypliny. Tworzymy polecenie pełnego (kompletnego) treningu. Ustawiamy i zlecamy (multicasting).
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Kamil Dworak | C# | Visual Studio 2008 | .cs | .cs | ***** / 8 |
Jacek Węgorkiewicz | C/C++ | .cpp | .cpp | ***** / 1 | |
Andrzej Borucki | Delphi/Pascal | .pas | .pas | ***** / 1 | |
Andrzej Borucki | Delphi/Pascal | Praktyczny przykład (eliminacja Gaussa) | .pas | .pas | ***** / 0 |
Kamil Dworak | Java | .java | .java | ***** / 7 |
Poprawiony: 21 marca 2011 21:10