niedziela, 2 marca 2014

Polecenie (obiektowy)

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