Der Befehlsmodus ist das verwirrendste Muster. in Ihrer tatsächlichen Programmierung. Der Befehlsmodus ist eigentlich kein sehr spezifisches Modell, und genau diese Flexibilität lässt die Menschen ein wenig verwirrt fühlen.
Befehlsdefinition
Viele Befehlsmoduscodes sind auf die grafische Schnittstelle ausgerichtet.
In einer Klasse in eine Klasse eingebaut, und der Benutzer (der Anrufer) in dieser Klasse ist der Befehlsmodus. .
Offensichtlich ist der Vorteil, dass es den Eigenschaften der Verpackung entspricht und die Kopplung reduziert.
Aus dem Befehlsmodus stellte ich auch fest, dass ein "gemeinsames Problem" des Entwurfsmodus: Ich mag es, einfache Probleme zu komplizieren und zu verschiedenen Klassen Dritte hinzuzufügen. Wiederverwendung des Codes.
So verwenden Sie den Befehlsmodus
Die spezifischen Befehlsmodus -Codes sind verschiedene, da es verschiedene Möglichkeiten gibt, Befehle und verschiedene Systeme zu verkapulieren. Das folgende Beispiel besteht darin, einen Befehl in einer Sammelliste zu entfernen.
Ein typischer Befehlsmodus erfordert eine Schnittstelle. In der Schnittstelle befindet sich eine einheitliche Methode, bei der "Befehle/Anforderungen in Objekte eingekapselt werden":
Die Codekopie lautet wie folgt:
öffentliche Schnittstelle Befehl {
öffentliche abstrakte void execute ();
}
Die spezifischen Befehls-/Anforderungscodes dienen dazu, den Befehl Interface zu implementieren, und es finden Sie drei spezifische Befehle unten:
Die Codekopie lautet wie folgt:
Der Ingenieur der öffentlichen Klasse implementiert den Befehl {
public void execute () {
// Befehl des Ingenieurs
}
}
Public Class Programmer implementiert den Befehl {
public void execute () {
// Befehl des Programmierers
}
}
Politiker der öffentlichen Klasse implementiert das Kommando {
public void execute () {
// Kommando des Politikers
}
}
Wie üblich können wir diese drei Befehle direkt aufrufen. Mit dem Befehlsmodus müssen wir sie jedoch zusammenfassen und in die Black -Box -Liste werfen:
Die Codekopie lautet wie folgt:
Produzent der öffentlichen Klasse {
öffentliche statische Liste processerequests () {
List queue = new ArrayList ();
queue.add (new DomesticEngineer ());
queue.add (neuer Politiker ());
queue.add (neuer Programmierer ());
Warteschlange zurückgeben;
}
}
Nachdem diese drei Befehle die Liste eingegeben haben, haben sie ihre Aussehenseigenschaften verloren.
Die Codekopie lautet wie folgt:
public class testcommand {
public static void main (String [] args) {
List queue = produzierer.Producerequests ();
für (iterator it = queue.iterator (); it.hasnext (););
// Nehmen Sie die Mitte und andere Funktionen der Liste heraus, und Sie können sie nicht feststellen, dass eine Funktion zu 100% korrekt ist.
// Sie sind mindestens der "Sohn" des Befehls der Schnittstelle.
((Befehl) iT.Next ()). Execute ();
}
}
Es ist zu erkennen, dass der Anrufer im Grunde nur mit der Schnittstelle mit der spezifischen Implementierung interagiert. muss den Code im Caller TestCommand nicht ändern.
Nach dem Verständnis des Kernprinzips des oben genannten Code sollte jeder seine eigenen Methoden verwenden, insbesondere bei der Trennung des Anrufers und der spezifischen Befehle, es gibt viele Implementierungsmethoden. . Dieser Ansatz dient nur zur Demonstration.
Ein guter Grund, den Befehlsmodus zu verwenden, liegt auch darin, dass die Funktionen für die Rückgängigkeit implementiert werden können. Jeder spezifische Befehl kann sich an die gerade ausgeführte Aktion erinnern und bei Bedarf wiederherstellen.
Der Befehlsmodus wird im Schnittstellendesign häufig verwendet. Die Menübefehle in Java Swing verwenden Befehlsmodus.