Latest web development tutorials

mode de commande

Mode de commande (Motif de commande) est un modèle de conception axée sur les données, il appartient au type de modèle. Demande de commande sous forme de paquets dans l'objet, et transmis à l'objet d'appel. Regarder l'objet d'appel peut traiter l'objet de commande appropriée et la commande est passée à l'objet approprié, qui exécute la commande.

introduction

Intention: encapsuler une demande comme un objet, vous pouvez donc utiliser différentes demandes de paramétrez clients.

Principalement pour résoudre: dans le système logiciel, le comportement du demandeur et le comportement obtenir généralement une relation de couplage étroit, mais certaines situations, telles que la nécessité de procéder à l' enregistrement, annuler ou rétablir, et d' autres le traitement des transactions, cette irrésistible étroitement couplés les modifications de conception ne convient pas.

Quand utiliser: Dans certains cas, tels que le comportement d'un "enregistrement, undo / redo, les transactions" et d' autres traitements, ces changements ne peuvent pas résister à l'accouplement étanche est inappropriée.Dans ce cas, comment la «conduite demandeur» et «implémenteur comportement" découplage? Agit comme un ensemble d'objets abstraits, couplage lâche peut être atteint entre les deux.

Comment corriger: Exécutez par le destinataire à appeler l'appelant, dans l' ordre: le récepteur de l' appelant → → Command.

Le code clé: la définition de trois rôles: 1, a reçu l'objet de commande d'exécution réel 2, commande 3, objets invocateur en utilisant l'entrée de commande

Exemples d'application: struts 1 core ActionServlet contrôleur en action est un seul, l'équivalent de Invoker, tandis que la couche de modèle de classe sera aussi différentes applications ont des classes de modèle, soit l'équivalent de commandement en béton.

Avantages: 1, le système réduit le degré de couplage.2, les nouvelles commandes peuvent être facilement ajoutés au système.

Inconvénients: le mode de commande peuvent provoquer certains systèmes ont trop de classe de commande spécifique.

scénario d'utilisation: que lacommande local peut utiliser le mode de commande, tels que: 1, GUI chaque bouton est une commande. 2, simulé CMD.

Remarque: Le système doit prendre en charge la commande undo (Annuler) et de redressement (Redo) opération, vous pouvez envisager d' utiliser le mode de commande, voir le mode de commande étendue.

réalisation

Nous avons d' abord créé comme une interface de commande à lacommande,puis créer une classe demandede bourse.Entité et de commandement des classesBuyStockSellStock,Ordreimplémente l'interface, il va effectuer le traitement de la commande réelle. Créé comme lecourtierde classe d'objetd'appel,qui peut accepter des commandes et des commandes.

objetBrokeren utilisant le mode de commande, en fonction du type de commande pour déterminer quel objet pour effectuer qui commande.CommandPatternDemo,nos classes de démonstration à l' aide de classeBrokerpour démontrer le mode de commande.

Le mode de commande diagramme UML

Etape 1

Créer une interface de commande.

Order.java

public interface ordre {
   vide execute ();
}

Etape 2

Créer une classe de demande.

Stock.java

public class Stock {
	
   private String nom = "ABC";
   privée quantité int = 10;

   achat public void () {
      System.out.println ( "Stock [Nom:" + nom + ", 
         Quantité: "+ quantité +"] acheté ");
   }
   vente public void () {
      System.out.println ( "Stock [Nom:" + nom + ", 
         Quantité: "+ quantité +"] vendu ");
   }
}

Etape 3

Créer classe d'entitéOrdreimplémente l'interface.

BuyStock.java

BuyStock public class implémente ordre {
   privé Stock abcStock;

   publique BuyStock (Stock abcStock) {
      this.abcStock = abcStock;
   }

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

SellStock.java

SellStock public class implémente ordre {
   privé Stock abcStock;

   SellStock publique (Stock abcStock) {
      this.abcStock = abcStock;
   }

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

Etape 4

Créer appels de commande de la classe.

Broker.java

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

   Courtier public class {
   Liste privée <Order> ListeCommande = new ArrayList <Order> (); 

   public void takeOrder (ordre de commande) {
      orderList.add (ordre);		
   }

   placeOrders public void () {
      pour (ordre de commande: ListeCommande) {
         order.execute ();
      }
      orderList.clear ();
   }
}

Etape 5

Utilisez la classe Broker pour accepter et exécuter des commandes.

CommandPatternDemo.java

public class CommandPatternDemo {
   main (String [] args) {public static void
      Stock abcStock = new Stock ();

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

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

      broker.placeOrders ();
   }
}

Etape 6

Vérifiez la sortie.

Stock [Nom: ABC, Quantité: 10] acheté
Stock [Nom: ABC, Quantité: 10] vendus