Das Command Muster Deimbacher, Gölles. Fakten Verhaltensmuster GoF – Muster Auslösender und...

Post on 06-Apr-2015

107 views 0 download

Transcript of Das Command Muster Deimbacher, Gölles. Fakten Verhaltensmuster GoF – Muster Auslösender und...

Das Command MusterDeimbacher, Gölles

Fakten

• Verhaltensmuster• GoF – Muster• Auslösender und Ausführender

sind entkoppelt.

Die Fernbedienung

Rückgängig Knopf

ON-Knopf 1

OFF-Knopf 1

• Austauschbare Befehle

• Die Geräte die gesteuert werden sind

verschieden

public interface Command {

public void execute();

}

Command

public class LightOnCommand extends

Command {

private Light light;

public LightOnCommand(Light light)

{

this.light = light;

}

public void execute() {

light.on();

}

}

Licht an…

Bei Ausführung wird Licht eingeschalten

Fernbedienungpublic class SimpleRemoteControl {

private Command slot;

public SimpleRemoteControl() {}

public void setCommand(Command command) {

slot = command;

}

public void buttonWasPressed()

{

slot.execute();

}

}

Testen der Fernbedienungpublic class RemoteControlTest {

public static void main(String[] args) {

SimpleRemoteControl remote = new

SimpleRemoteControl();

Light light = new Light();

LightOnCommand lightOn = new LightOnCommand(light);

remote.setCommand(lightOn);

remote.buttonWasPressed();

}

}

Erstellen der benötigten Objekte

Zuweisung des Licht-An-Befehl

Aufgabenstellung• Implementiere den Befehl (Command)

• Zeichne das dazugehörige Klassendiagramm

Öffnen des Tores

Es existiert eine Klasse „EntranceGate “

Auflösung

public class OpenEntraceGateCommand extends Command

{

private EntraceGate gate;

public OpenEntraceGateCommand (EntraceGate

gate) {

this.gate = gate;

}

public void execute() {

gate.openGate();

}

}

Mehr Buttons, mehr Funktionen

Rückgängig Funktion…

Rückgängig Knopf

Gesamte Klassendiagramm

• Besitzt Befehl (Befehle)• Ruft Befehl auf

• Schnittstelle für Befehle• FuehreAus() – Fürt Funktion aus

• Verbinden Action und Receiver• Weiß wie die Arbeit

funktioniert• Kann jede Klasse sein

• Erstellen des „ConreteCommand“

Weitere Anwendungsfälle

Weitere Anwendungsfälle

Vielen Dank für eure Aufmerksamkeit

Deimbacher, Gölles