Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Command Pattern Karola Schäuble, 13015. Wozu eigentlich? Beispiel Textverarbeitung viele Funktionen können von unterschiedlichen Stellen aus aufgerufen.

Ähnliche Präsentationen


Präsentation zum Thema: "Command Pattern Karola Schäuble, 13015. Wozu eigentlich? Beispiel Textverarbeitung viele Funktionen können von unterschiedlichen Stellen aus aufgerufen."—  Präsentation transkript:

1 Command Pattern Karola Schäuble, 13015

2 Wozu eigentlich? Beispiel Textverarbeitung viele Funktionen können von unterschiedlichen Stellen aus aufgerufen werden, z.B. - Menüeintrag - Button - Popup-Menü bei Rechtsklick - Tastaturkürzel Soll jedesmal die Funktion dahinter implementiert werden?

3 Befehle sollen rückgängig gemacht werden können oder sie sollen erneut ausgeführt werden Wie kann man das speichern, wenn die Operationen eng mit den Objekten die sie aufrufen verbunden sind? Beispiel Textverarbeitung

4 Lösung Den Befehl in einem Objekt kapseln! Ein und derselbe Befehl kann von meheren Objekten aus aufgerufen werden. Die Befehlsobjekte können in einer Befehlsgeschichte gespeichert werden.

5 Einfache Struktur Die abstrakte Klasse Command definiert die Schnittstelle, über die der Invoker auf jede konkrete Befehlsklasse zugreifen kann.

6 Erklärung Der Client (Anwendung) erzeugt ein ConcreteCommand- Objekt und weist ihm den Receiver zu. Der Invoker befiehlt seinem gespeicherten Befehlsobjekt eine Anfrage auszuführen. ConcreteCommand implementiert die execute()-Methode der Klasse Command und ruft darüber seinen Receiver auf. Der Receiver führt nun die entsprechenden Operationen aus. Entkopplung von Aufrufer und Empfänger eines Befehls!

7 Vom Invoker zum ConcreteCommand Beispiel Menü beim Hinzufügen der Menüeinträge wird eine add()- Methode aufgerufen - allgemein: add(String, Command) - speziell: add(NameMenueEintrag, KonkreterBefehl) Der Name des Menüeintrags und der dazugehörige Befehl werden dann in einer Tabelle abgelegt.

8 Code Beispiel abstract class Command { abstract public void execute(); } class ConcreteCommand extends Command { public ConcreteCommand() {... } public void execute() {... }

9 Rückgängig Um noch die Möglickeit des Rückgängigmachens hinzuzufügen, bekommt die Klasse Command noch eine undo()-Methode. Der Zustand des Receivers wird nun im Befehlsobjekt gespeichert, bevor der Befehl ausgeführt wird und kann über undo() wiederhergestellt werden. Es braucht desweiteren noch einen CommandManager, der die Befehlsobjekte in einer Liste speichert und gegebenenfalls dessen undo()-Methode aufruft.


Herunterladen ppt "Command Pattern Karola Schäuble, 13015. Wozu eigentlich? Beispiel Textverarbeitung viele Funktionen können von unterschiedlichen Stellen aus aufgerufen."

Ähnliche Präsentationen


Google-Anzeigen