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