Polecenie (Command)
Traktujący żądanie wykonania określonej czynności jako obiekt,
dzięki czemu mogą być one parametryzowane w zależności
od rodzaju odbiorcy, a także umieszczane w kolejkach i dziennikach.
Zastosowanie:
- Wzorzec znajduje zastosowanie wszędzie tam, gdzie musimy
zapamiętywać wykonywane operacje lub je wycofywać.
- Gdy identyczne polecenia muszą być parametryzowane różnymi danymi
w zależności od tego, kto odpowiada za ich obsłużenie.
Przykład:
import java.util.*; public class CommandQueue {
1. Implementujemu interfejst Command - nasze polecenie, a w nim metode execute().
interface Command { void execute(); }
2. Każdy z zawodów implementuje interfejs oraz metoda exeecute() na swój sposób,
ponieważ każdy zawód wykonuje swoją odrębną część.
static class DomesticEngineer implements Command { public void execute() { System.out.println( "take out the trash" ); } }
3. Zadanie dla policjanta określone w metodzie execute().
static class Politician implements Command { public void execute() { System.out.println( "take money from the rich, take votes from the poor" ); } }
4. Zadanie dla programisty określone w metodzie execute().
static class Programmer implements Command { public void execute() { System.out.println( "sell the bugs, charge extra for the fixes" ); } }
5. Lista żadań, zadań.
public static List produceRequests() { List queue = new ArrayList(); queue.add( new DomesticEngineer() ); queue.add( new Politician() ); queue.add( new Programmer() ); return queue; }
6. Metoda wykonująca wszystkie metody execute().
public static void workOffRequests( List queue ) { for (Iterator it = queue.iterator(); it.hasNext(); ) ((Command)it.next()).execute(); }
7. Main programu.
public static void main( String[] args ) { List queue = produceRequests(); workOffRequests( queue ); } }
Diagram:
Brak komentarzy:
Prześlij komentarz