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