Befehlsmodus ist ein Verhaltensentwurfsmuster, das eine Anfrage in ein separates Objekt umwandelt, das alle mit der Anfrage verbundenen Informationen enthält. Diese Transformation ermöglicht es Ihnen, Methoden basierend auf unterschiedlichen Anforderungen zu parametrisieren, Anforderungen zu verzögern oder in die Warteschlange zu stellen und rückgängig zu machende Vorgänge zu implementieren.
Struktur des Befehlsmodus
Absender Die Klasse (Sender) – auch bekannt als „Invoker“ – ist für die Initialisierung der Anforderung verantwortlich, die eine Mitgliedsvariable enthalten muss, um einen Verweis auf das Befehlsobjekt zu speichern. Der Sender löst den Befehl aus, ohne eine Anfrage direkt an den Empfänger zu senden. Beachten Sie, dass der Absender nicht für die Erstellung des Befehlsobjekts verantwortlich ist: Er erhält normalerweise einen vorab generierten Befehl vom Client über einen Konstruktor.
BefehlDie (Befehls-)Schnittstelle deklariert normalerweise nur eine Methode zum Ausführen des Befehls.
Spezifische Bestellungen (Concrete Commands) implementiert verschiedene Arten von Anfragen. Der spezifische Befehl selbst schließt die Arbeit nicht ab, sondern delegiert den Aufruf an ein Geschäftslogikobjekt. Um den Code zu vereinfachen, können diese Klassen jedoch zusammengeführt werden. Die zum Empfangen der Ausführungsmethode des Objekts erforderlichen Parameter können als Mitgliedsvariablen bestimmter Befehle deklariert werden. Sie können das Befehlsobjekt unveränderlich machen und nur die Initialisierung dieser Mitgliedsvariablen durch den Konstruktor zulassen.
Empfänger Die Klasse (Empfänger) enthält einen Teil der Geschäftslogik. Als Empfänger kann nahezu jeder Gegenstand dienen. Die meisten Befehle befassen sich nur mit den Details, wie die Anfrage an den Empfänger weitergeleitet wird, und der Empfänger erledigt die eigentliche Arbeit selbst.
Klient (Client) erstellt und konfiguriert spezifische Befehlsobjekte. Der Client muss alle Anforderungsparameter, einschließlich der Empfängerentität, an den Konstruktor des Befehls übergeben. Anschließend kann der generierte Befehl einem oder mehreren Absendern zugeordnet werden.