Latest web development tutorials

Befehlsmodus

Befehlsmodus (Command-Muster) ist ein datengetriebene Designmuster, es auf die Art des Modells gehört. Anforderungsbefehl in Form von Paketen in dem Objekt, und an das rufende Objekt übergeben. Suchen Sie Anruf-Objekt kann den entsprechenden Befehl Objekt verarbeiten und der Befehl an das entsprechende Objekt übergeben, der den Befehl ausführt.

Einführung

Absichten: kapseln eine Anfrage als Objekt, so können Sie verschiedene Anfragen verwenden , um Kunden zu parametrieren.

Vor allem zu lösen: In der Software - System, das Verhalten des Antragstellers und Verhalten in der Regel eine Beziehung eng gekoppelt zu erreichen, aber einige Situationen, wie zum Beispiel die Notwendigkeit , die Aufnahme zu führen, rückgängig machen oder wiederherstellen und andere Transaktionsverarbeitung, dieser unwiderstehliche Designänderungen eng gekoppelt ist nicht angemessen.

Wann verwendet: In einigen Fällen, wie zum Beispiel auf das Verhalten eines "record, Undo / Redo, Transaktionen" und andere Behandlung können solche Änderungen nicht wider die enge Kopplung ungeeignet ist.In diesem Fall, wie wird "Verhalten Anforderer" und "Verhalten Implementierer" entkoppeln? Wird als eine Reihe von abstrakten Objekten, lose Kopplung zwischen den beiden erreicht werden.

Wie zu beheben: Führen Sie vom Empfänger den Anrufer anzurufen, um: der Anrufer Empfänger → → Befehl.

Der Tastencode: die Definition von drei Rollen: 1 erhielt die reale Ausführung des Befehls Objekt 2, Command 3, invoker Objekte mit dem Befehl Eintrag

Anwendungsbeispiele: Streben 1 Core - Controller ActionServlet in Aktion ist nur ein, das Äquivalent von Fragesteller , während Klassenmodell Schicht als unterschiedliche Anwendungen unterschiedliche haben Klassen - Modell sein, das Äquivalent von konkreten Befehl.

Vorteile: 1, reduziert das System den Kopplungsgrad.2, neue Befehle an das System leicht hinzugefügt werden kann.

Nachteile: Befehlsmodus können einige Systeme verursachen zu viele spezifische Befehlsklasse haben.

Einsatzszenario: dass derlokale Befehl den Befehlsmodus verwenden können, wie zum Beispiel: 1, GUI jede Taste ist ein Befehl. 2, simuliert CMD.

Hinweis: Das System Befehl rückgängig unterstützen muss (Undo) und Wiederherstellungsoperation (Redo) Betrieb, können Sie mit dem Befehl - Modus betrachten, sehen erweiterten Befehlsmodus.

Realisierung

Wir zunächst als Befehlsschnittstelle zubestellen,erstellt und dann eine Klasse AnfrageLagerbestanderstellen. Entity und BefehlsklassenBuyStockSellStock,Ordnungdie Schnittstelle implementiert, wird es die tatsächliche Befehlsverarbeitung durchführen. Erstellt als AnrufobjektklasseBroker,die Bestellungen und Aufträge annehmen können.

Broker- Objekt mit dem Kommando - Modus, basierend auf der Art von Befehl, der auszuführen Objekt zu bestimmen , welche Befehle.CommandPatternDemo,unsere Demonstration KlassenBroker- Klasse Befehlsmodus zu demonstrieren.

Befehlsmodus UML-Diagramm

Schritt 1

Erstellen Sie eine Befehlsschnittstelle.

Order.java

public interface Auftrag {
   void execute ();
}

Schritt 2

Erstellen Sie eine Anfrage Klasse.

Stock.java

public class Auf {
	
   private String name = "ABC";
   private int Menge = 10;

   public void kaufen () {
      System.out.println ( "Auf [Name:" + name + ", 
         Menge: "+ Anzahl +"] gekauft ");
   }
   public void sell () {
      System.out.println ( "Auf [Name:" + name + ", 
         Menge: "+ Anzahl +"] verkauft ");
   }
}

Schritt 3

Erstellen von Entity - KlasseOrdnungimplementiert das Interface.

BuyStock.java

public class BuyStock implementiert Auftrag {
   Private Stock abcStock;

   public BuyStock (Aktien abcStock) {
      this.abcStock = abcStock;
   }

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

SellStock.java

public class SellStock implementiert Auftrag {
   Private Stock abcStock;

   public SellStock (Aktien abcStock) {
      this.abcStock = abcStock;
   }

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

Schritt 4

Erstellen Sie Befehl ruft die Klasse.

Broker.java

Import java.util.ArrayList;
Import java.util.List;

   public class Broker {
   private List <Order> ORDER = new Arraylist <Order> (); 

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

   public void placeOrders () {
      für (bestellen: ORDER) {
         order.execute ();
      }
      orderList.clear ();
   }
}

Schritt 5

Verwenden Sie Broker-Klasse zu übernehmen und Befehle ausführen.

CommandPatternDemo.java

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

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

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

      broker.placeOrders ();
   }
}

Schritt 6

Stellen Sie sicher, ausgegeben.

Auf [Name: ABC, Menge: 10] gekauft
Auf [Name: ABC, Menge: 10] verkauft