Java Reference
In-Depth Information
die Methode
fuehreAus()
des gespeicherten Befehlsobjekts auf und dieses führt
nun den Befehl aus, in dem es die Methode
aktion()
des Empfängerobjekts aufruft.
Das Sequenzdiagramm in Bild 4-31 zeigt den grundsätzlichen Ablauf des Befehlsmus-
ters:
:Client
:Aufrufer
:Empfaenger
erzeuge
(:Empfaenger)
:Konkreter-
Befehl
speichereBefehl (:KonkreterBefehl)
speichereBefehl()
aktivieren()
aktivieren() : status
fuehreAus()
fuehreAus()
aktion()
aktion()
Bild 4-31 Sequenzdiagramm des Befehlsmusters
Wie bereits erwähnt wurde, legt das Entwurfsmuster nicht fest, wann und wie der Be-
fehl ausgeführt wird. Beispielsweise könnte das Objekt der Klasse
Aufrufer
die Aus-
führung des konkreten Befehls zeitgesteuert veranlassen. Der Aufruf der Methode
ak-
tivieren()
würde dann entfallen, da der Aufrufer selbst den Aufruf der Methode
fuehreAus()
auslöst. Es ist auch denkbar, dass der Aufrufer selbst ereignisgesteu-
ert, oder dass ein anderer Client als der, der den Befehl erzeugt und einspeichert, die
Methode
aktivieren()
aufruft und damit die Ausführung des gespeicherten Befehls
auslöst.
4.10.3.4 Programmbeispiel
Das Befehlsmuster wird im folgenden Beispiel verwendet, um Befehle für eine Licht-
quelle zu kapseln.
Lichtquelle
ist also die Empfänger-Klasse und hat zwei Metho-
den, um ihren Status ändern zu können - also um das Licht ein- bzw. ausschalten zu
können. Folglich gibt es Objekte zweier konkreten Befehlsklassen, nämlich der Klas-
sen
LichtEinBefehl
und
LichtAusBefehl
. Ein Lichtschalter dient in diesem Bei-
spiel dazu, eine Lichtquelle zu schalten. Die Klasse
LichtSchalter
fungiert somit
als Aufrufer-Klasse. Sie speichert einen konkreten Befehl und kann dessen Ausfüh-
rung veranlassen.
Search WWH ::
Custom Search