Java Reference
In-Depth Information
x Durch die Kapselung eines Befehls in einem Befehlsobjekt wird eine Zwischen-
schicht eingeführt. Damit kann ein Befehl die Methode aktion() asynchron aufru-
fen.
x Der Aufrufer braucht die Details der konkreten Befehle nicht zu kennen. Damit sind
Befehle austauschbar und man kann Aufrufer-Klassen unabhängig vom Rest der
Applikation implementieren.
x Man kann Befehle dynamisch zur Laufzeit austauschen und damit das Verhalten
eines Aufrufers wie beispielsweise eines Buttons einer grafischen Oberfläche ver-
ändern.
x Befehlsobjekte können wiederverwendet werden. So kann beispielsweise bei einem
Befehlsobjekt die Referenz auf ein Empfängerobjekt geändert werden. Das Befehls-
objekt kann dann erneut ausgeführt werden, der Client muss nicht für jeden Emp-
fänger ein neues Befehlsobjekt erzeugen.
4.10.4.2 Nachteile
Die folgenden Nachteile werden gesehen:
x Durch das Verpacken eines Befehls in einem Objekt entsteht ein zusätzlicher
Aufwand beim Aufruf des Befehls (Verschachtelung der Aufrufe).
x Für jede Art von konkretem Befehl muss eine eigene Klasse erstellt werden. Die
Schnittstelle IBefehl definiert die Signatur der Methode fuehreAus() . Dadurch
sind die Parameter dieser Methode für alle Befehle gleich. Es gibt somit einen er-
höhten Aufwand, um einem Befehl Parameter hinzufügen oder einen Befehl einer
anderen Empfänger-Klasse zu implementieren.
x Die Implementierung dieses Musters in verteilten Systemen wird komplex.
4.10.5
Einsatzgebiete
Man kann das Befehlsmuster z. B. in grafischen Oberflächen anwenden. Die Anwen-
dung (hier Client genannt) könnte beispielsweise einen Button als Aufrufer erzeugen,
der beim Anklicken die Methode fuehreAus() eines Objektes einer Klasse aufruft,
die das Interface IBefehl implementiert. In ähnlicher Weise können die Aktionen, die
durch Auswahl eines Menüpunktes in einem Menü - wie beispielsweise das Speichern
eines Dokumentes - ausgelöst werden sollen, realisiert werden.
Die Verwendung des Befehlsmusters bietet sich in weiteren Fällen an:
1. Logging - vereinfachte Protokollierung
Man kann die Referenzen auf die Befehlsobjekte in einem Stream (Kanal) aufreihen,
wodurch man eine Logging-Möglichkeit für Befehle hat.
2. Zeitversetzte Ausführung - Einreihen der Befehle in eine Warteschlange
Werden die Referenzen auf die Befehle in eine Warteschlange (engl. queue) einge-
reiht, so kann ein Server-Prozess sie von dort aus zu gegebener Zeit zur Ausführung
bringen.
Search WWH ::




Custom Search