Latest web development tutorials

Command Mode

Modalità di comando (Command Pattern) è un modello di progettazione guidata dai dati, appartiene al tipo di modello. comando di richiesta sotto forma di pacchetti in oggetto, e passato per l'oggetto chiamante. Guardando oggetto chiamata può elaborare l'oggetto comando appropriato e il comando viene passato l'oggetto appropriato, che esegue il comando.

introduzione

Intento: incapsulare una richiesta come un oggetto, in modo da poter utilizzare diverse richieste di parametrizzare i clienti.

Principalmente per risolvere: nel sistema software, il comportamento del richiedente e del comportamento di solito ottenere un rapporto strettamente accoppiati, ma alcune situazioni, come la necessità di effettuare la registrazione, annullare o ripetere, e altri elaborazione delle transazioni, questo irresistible strettamente accoppiati modifiche di progettazione non è appropriato.

Quando usare: in alcuni casi, come ad esempio per il comportamento di un "record, undo / redo, le operazioni" e altri trattamenti, tali cambiamenti non possono resistere alla accoppiamento stretto non è appropriato.In questo caso, come si "condotta richiedente" e "comportamento realizzatore" disaccoppiamento? Agisce come un insieme di oggetti astratti, accoppiamento lasco può essere raggiunto tra i due.

Come risolvere: eseguire da parte del destinatario per richiamare il chiamante, in ordine: il ricevitore chiamante → → Comando.

Il codice chiave: la definizione di tre ruoli: 1, ha ricevuto l'esecuzione oggetto comando vero e proprio 2, 3 Comando, oggetti invoker utilizzando la voce di comando

Esempi di applicazione: montanti regolatore 1nucleo ActionServlet in azione è una sola, l'equivalente di Invoker, mentre lo strato modello di classe sarà come diverse applicazioni hanno diverse classi del modello, l'equivalente di comando calcestruzzo.

Vantaggi: 1, il sistema riduce il grado di accoppiamento.2, nuovi comandi possono essere facilmente aggiunte al sistema.

Svantaggi: modalità di comando può causare alcuni sistemi hanno troppi specifica classe di comando.

scenario di utilizzo: che ilcomando locale può utilizzare la modalità di comando, come ad esempio: 1, GUI ogni pulsante è un comando. 2, simulato CMD.

Nota: Il sistema deve supportare comando Annulla (Undo) e il funzionamento operazione di recupero (Redo), si può considerare l'utilizzo di modalità di comando, vedi modalità di comando estesa.

realizzazione

In primo luogo abbiamo creato come interfaccia di comando diordinazione,e quindi creare una classe richiestaFotografici.Entità e di comando classiBuyStockSellStock,Ordineimplementa l'interfaccia, eseguirà l'elaborazione di comando vero e proprio. Creato come la classeBrokeroggettochiamata,che può accettare ordini e ordini.

oggettoBrokerutilizzando la modalità di comando, in base al tipo di comando per determinare quale oggetto per eseguire che comanda.CommandPatternDemo,i nostri corsi dimostrativi utilizzando classeBrokerper dimostrare modalità di comando.

modalità di comando diagramma UML

fase 1

Creare un interfaccia di comando.

Order.java

interfaccia pubblica Order {
   vuoto execute ();
}

fase 2

Creare una classe richiesta.

Stock.java

public class della {
	
   Nome private String = "ABC";
   quantità private int = 10;

   Comprare public void () {
      System.out.println ( "della [Nome:" + nome + ", 
         Quantità: "quantità + +"] comprato ");
   }
   vendita public void () {
      System.out.println ( "della [Nome:" + nome + ", 
         Quantità: "+ Quantità +"] venduto ");
   }
}

fase 3

Creare classe di entitàOrderimplementa l'interfaccia.

BuyStock.java

public class BuyStock implementa Order {
   abcStock scorte private;

   pubblico BuyStock (abcStock azione) {
      this.abcStock = abcStock;
   }

   public void execute () {
      abcStock.buy ();
   }
}

SellStock.java

public class SellStock implementa Order {
   abcStock scorte private;

   SellStock pubblico (abcStock azione) {
      this.abcStock = abcStock;
   }

   public void execute () {
      abcStock.sell ();
   }
}

fase 4

Creare le chiamate di comando della classe.

Broker.java

import java.util.ArrayList;
import java.util.List;

   public class Broker {
   Elenco privato <Order> carello = new ArrayList <Order> (); 

   public void takeOrder (ordine Order) {
      orderList.add (ordine);		
   }

   placeOrders public void () {
      per (ordine Order: carello) {
         order.execute ();
      }
      orderList.clear ();
   }
}

fase 5

Utilizzare classe Broker di accettare ed eseguire i comandi.

CommandPatternDemo.java

public class CommandPatternDemo {
   Main (string [] args) {public static void
      abcStock Disponibile = nuove foto di archivi ();

      BuyStock buyStockOrder = new BuyStock (abcStock);
      SellStock sellStockOrder = new SellStock (abcStock);

      Broker mediatore = new Broker ();
      broker.takeOrder (buyStockOrder);
      broker.takeOrder (sellStockOrder);

      broker.placeOrders ();
   }
}

passo 6

Verifica uscita.

Della [Nome: ABC, Quantità: 10] comprato
Della [Nome: ABC, Quantità: 10] venduto