Java Reference
In-Depth Information
4.10 Das Verhaltensmuster Befehl
4.10.1
Name/Alternative Namen
Befehl, Kommando (engl. command), Aktion (engl. action).
4.10.2
Problem
Das Befehlsmuster soll einen Befehl, eine Aktion, eine Anfrage bzw. einen Methoden-
aufruf - im Folgenden kurz Befehl genannt - in einem Objekt kapseln.
Durch das Befehlsmuster soll die Erteilung und die Auslösung eines Befehls zeitlich
entkoppelt werden. Das bedeutet, dass das Erzeugen eines Befehls und seine Aus-
führung zu verschiedenen Zeiten stattfinden können.
Der
Aufrufer
soll nicht von der Ausprägung eines konkreten Befehls abhängen. Er soll
nur die Abstraktion eines Befehls kennen und somit sollen Details eines konkreten
Befehls vor dem Aufrufer verborgen bleiben. Damit sollen verschiedene Implementie-
rungen eines Befehls möglich sein, z. B. "rechts", "links", "oben", "unten". Außerdem
soll der Aufrufer den Empfänger des Befehls nicht kennen.
Das
Befehlsmuster
soll die Details eines Befehls vor dem Aufru-
fer des Befehls verbergen. Es soll es erlauben, dass die Erzeu-
gungszeit und die Ausführungszeit des Befehls getrennt werden
können.
4.10.3
Lösung
Das Verhaltensmuster Befehl ist ein objektbasiertes Entwurfsmuster. Ein konkreter Be-
fehl entspricht einem Methodenaufruf oder einer Folge von Methodenaufrufen auf ei-
nem Empfängerobjekt. Ein
konkreter Befehl
selbst wird zusammen mit der Referenz
auf das Empfängerobjekt in einem auf dem Interface
IBefehl
basierenden Objekt
ge-
kapselt
und wird einem
Aufrufer
übergeben
. Der Aufrufer hängt so nicht von den De-
tails des Befehls ab, sondern nur vom Interface
IBefehl
. Gibt der Aufrufer das Inter-
face selbst vor, ist er natürlich nicht von ihm abhängig. Das Muster macht aber keine
Aussage darüber, wer das Interface vorgibt.
Ein
Client
bzw. eine Anwendung erstellt konkrete Befehle und
weist ihnen einen Empfänger zu.
Die Klasse
KonkreterBefehl
implementiert das Interface
IBefehl
. Der entspre-
chende Empfänger und die auszuführenden Methoden müssen dem konkreten Befehl
jeweils bekannt sein.
Search WWH ::
Custom Search