Latest web development tutorials

Modo de comando

Modo de Comando (Padrão de comando) é um padrão de design orientado a dados, ele pertence ao tipo de modelo. comando de solicitação na forma de pacotes no objeto, e passado para o objeto de chamada. Olhando objeto chamada pode processar o objeto de comando apropriado e o comando é passado para o objeto apropriado, que executa o comando.

introdução

Intenção: Encapsular um pedido como um objeto, assim você pode usar diferentes pedidos de parametrizar clientes.

Principalmente para resolver: no sistema de software, o comportamento do solicitante e comportamento geralmente conseguir uma relação de fortemente acoplados, mas algumas situações, tais como a necessidade de realizar a gravação, anular ou refazer, e outra de processamento de transações, este irresistível intimamente ligado alterações de design não é apropriado.

Quando usar: Em alguns casos, como ao comportamento de um "registro, undo / redo, transações" e outros tratamentos, tais mudanças não pode resistir à forte ligação é inadequada.Neste caso, como é que a "conduta solicitante" e "implementador comportamento" dissociação? Age como um conjunto de objetos abstratos, acoplamento pode ser alcançado entre os dois.

Como corrigir: Executar pelo destinatário para ligar para o chamador, em ordem: o receptor de chamadas → → Comando.

O código de chave: a definição de três papéis: 1, recebeu o objeto de comando verdadeira execução 2, Command 3, objetos solicitante usando a entrada de comando

Exemplos de aplicação: struts 1 núcleo ActionServlet controlador em ação é apenas um, o equivalente a Invoker, enquanto a camada de modelo de classe será tão diferentes aplicações têm diferentes classes de modelo, o equivalente a Command concreto.

Vantagens: 1, o sistema reduz o grau de acoplamento.2, novos comandos podem ser facilmente adicionadas ao sistema.

Desvantagens: modo de comando pode fazer com que alguns sistemas têm muitos classe de comando específico.

cenário de uso: que ocomando local pode usar o modo de comando, tais como: 1, GUI cada botão é um comando. 2, simulado CMD.

Nota: O sistema precisa suportar desfazer de comando (Undo) e operação operação de recuperação (Redo), você pode considerar o uso do modo de comando, consulte o modo de comando estendido.

realização

Nós primeiro criado como uma interface de comandopara ordeme, em seguida, criar uma solicitaçãodaclasse. Entidade e comando aulasBuyStockSellStock,Ordemimplementa a interface, ele irá executar o processamento comando real. Criado como oBrokerclasse chamada deobjeto,que pode aceitar encomendas e encomendas.

objetoBrokerusando o modo de comando, com base no tipo de comando para determinar qual objeto para executar os comandos que.CommandPatternDemo,nossas aulas de demonstração utilizando classeBrokerpara demonstrar o modo de comando.

O modo de comando UML diagrama

passo 1

Criar uma interface de comando.

Order.java

Ordem interface pública {
   vazio execute ();
}

passo 2

Crie uma classe pedido.

Stock.java

classe pública da {
	
   private String nome = "ABC";
   quantidade private int = 10;

   buy public void () {
      System.out.println ( "da [nome:" + Nome + ", 
         Quantidade: "+ quantidade +"] comprado ");
   }
   sell public void () {
      System.out.println ( "da [nome:" + Nome + ", 
         Quantidade: "+ quantidade +"] vendido ");
   }
}

passo 3

Criar classe de entidadeOrderimplementa a interface.

BuyStock.java

classe pública BuyStock implementa Order {
   privada da abcStock;

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

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

SellStock.java

classe pública SellStock implementa Order {
   privada da abcStock;

   SellStock público (da abcStock) {
      this.abcStock = abcStock;
   }

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

passo 4

Criar chamadas de comando da classe.

Broker.java

importação java.util.ArrayList;
import java.util.List;

   Broker classe pública {
   Lista privada <Order> OrderList = new ArrayList <Order> (); 

   public void takeOrder (ordem Ordem) {
      orderList.add (ordem);		
   }

   placeOrders public void () {
      for (ordem Ordem: OrderList) {
         order.execute ();
      }
      orderList.clear ();
   }
}

passo 5

Use classe Broker para aceitar e executar comandos.

CommandPatternDemo.java

CommandPatternDemo classe pública {
   main (String [] args) public static void {
      Da abcStock = new estoque ();

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

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

      broker.placeOrders ();
   }
}

passo 6

Verifique saída.

Da [Nome: ABC, Quantidade: 10] comprado
Da [Nome: ABC, Quantidade: 10] vendidos