Latest web development tutorials

Modo de comando

Modo de comando (Patrón de comandos) es un patrón de diseño basada en datos, pertenece al tipo de modelo. orden de petición en forma de paquetes en el objeto, y se pasa al objeto que llama. Mirando objeto llamada puede procesar el objeto de comando apropiado y el comando se pasa al objeto apropiado, que ejecuta el comando.

introducción

Intención: encapsular una petición como un objeto, por lo que puede utilizar diferentes solicitudes para parametrizar los clientes.

Principalmente para resolver: en el sistema de software, el comportamiento de la solicitante y el comportamiento general lograr una relación de fuertemente acoplado, pero algunas situaciones, tales como la necesidad de realizar la grabación, deshacer o rehacer, y otra de procesamiento de transacciones, este irresistible cambios en el diseño firmemente y no es apropiado.

Cuándo utilizar: En algunos casos, como con el comportamiento de un "registro, deshacer / rehacer, las transacciones" y otros tratamientos, tales cambios no pueden resistir el estrecho acoplamiento es inapropiada.En este caso, la forma en que "la conducta del solicitante" y "implementador comportamiento" desacoplamiento? Actúa como un conjunto de objetos abstractos, la articulación flexible se pueden conseguir entre los dos.

Cómo solucionarlo: Dirigido por el destinatario para llamar a la persona que llama, en orden: el receptor de llamadas → → Comando.

El código de la llave: la definición de tres funciones: 1, recibió la ejecución del objeto de comandos reales 2, 3 de comando, objetos usuario solicitante utilizando la entrada de comandos

Ejemplos de aplicación: 1 puntales controlador central ActionServlet en acción es sólo uno, el equivalente de invocador, mientras que la capa modelo de clases será tan diferentes aplicaciones tienen diferentes clases del modelo, el equivalente de Comando de hormigón.

Ventajas: 1, el sistema reduce el grado de acoplamiento.2, nuevos comandos pueden ser fácilmente añadidos al sistema.

Desventajas: el modo de comando pueden causar algunos sistemas tienen demasiados clase de comando específico.

Escenario de uso: que elcomando local puede utilizar el modo de comando, como por ejemplo: 1, interfaz gráfica de usuario de cada botón es un comando. 2, simula CMD.

Nota: El sistema debe ser compatible con el comando deshacer (Deshacer) y la operación de recuperación (Rehacer), se puede considerar el uso del modo de comando, consulte el modo de comando extendida.

realización

Creó por primera vez como una interfaz de órdenes depedido,y luego crear una clasedepetición. Entidad y de mando clasesBuyStockSellStock,Ordenimplementa la interfaz, se llevará a cabo el procesamiento de comandos real. Creado como elcorredor declase de objetollamada,que puede aceptar órdenes y órdenes.

Brokerobjeto usando el modo de comando, con base en el tipo de comando para determinar cuál es el objeto de realizar el que manda.CommandPatternDemo,nuestras clases de demostración utilizando la claseBrokerpara demostrar el modo de comando.

El modo de comando diagrama UML

Paso 1

Crear una interfaz de comandos.

Order.java

Orden {interfaz pública
   void ejecutar ();
}

Paso 2

Crear una clase de petición.

Stock.java

De la clase pública {
	
   private String nombre = "ABC";
   int Cantidad disponible = 10;

   Comprar public void () {
      System.out.println ( "Stock [Nombre:" + nombre + ", 
         Cantidad: "+ cantidad +"] compró ");
   }
   venta public void () {
      System.out.println ( "Stock [Nombre:" + nombre + ", 
         Cantidad: "+ cantidad +"] vendido ");
   }
}

paso 3

Crear clasedeentidadOrderimplementa la interfaz.

BuyStock.java

BuyStock clase pública implementa Orden {
   privada de la abcStock;

   BuyStock pública (de la abcStock) {
      this.abcStock = abcStock;
   }

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

SellStock.java

SellStock clase pública implementa Orden {
   privada de la abcStock;

   SellStock pública (de la abcStock) {
      this.abcStock = abcStock;
   }

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

Paso 4

Crear llamadas de comandos de la clase.

Broker.java

java.util.ArrayList importación;
java.util.List importación;

   Broker public class {
   Lista privada <Order> OrderList = new ArrayList <Order> (); 

   public void takeOrder (orden de pedido) {
      orderList.add (orden);		
   }

   placeOrders public void () {
      para (orden de pedido: OrderList) {
         order.execute ();
      }
      orderList.clear ();
   }
}

paso 5

Utilice la clase Broker para aceptar y ejecutar comandos.

CommandPatternDemo.java

CommandPatternDemo public class {
   principales argumentos (String []) {public static void
      Stock abcStock = nuevo archivo ();

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

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

      broker.placeOrders ();
   }
}

paso 6

Verifique la salida.

Stock [Nombre: ABC, Cantidad: 10] comprado
Stock [Nombre: ABC, Cantidad: 10] vendidos