Inhalt Abbildung PDF Source OO-Designkurs
 |<    <     >    >|  Generated by CoCoDiL

4.3 Kapseln der Benutzeraktionen durch Command Pattern

Im obigen Kapitel wird vom Interaktionsobjekt aus, der Befehl zum Erzeugen eines neuen Dokumentes ausgelöst. Der Erzeugen eines neuen Objekts findet in der Funktionskomponente statt

IKDokumentListe >> void activateCreateNewDokument(){
     funktionskomponente.neuesDokument().
}

Warum einfach wenn es auch kompliziert geht

IKDokumentListe >> void activateCreateNewDokument{
     this.createNewDokumentCommand().execute();
}
IKDokumentListe >> Command createNewDokumentCommand(){
// Erzeuge ein Command Objekt mit der Funktionskomponente als Wert der
// Instanzvariable receiver
Command commandObjekt := new CreateNewDokumentCommand().
        commandObjekt.setReceiver(this.funktionskomponente());
        return commandObjekt ;
}
CreateNewDokumentCommand >> void execute(){
        receiver.neuesDokument();
}

Nachteile der komplizierten Version:

Vorteile der komplizierten Version:

Eine Erweiterung des Command Patterns, ist das Command-Processor Pattern. Es wird u.a. für Undo's verwendet. Bei dem Command-Pattern sind i.a 5 Klassen beteiligt:


Abb. 4.5: CRC Karten Command Pattern

Hier das zugehörige Objektmodell:


Abb. 4.6: ObjektModell Command Pattern

Beispiel:Der Anwender hat in einem Text ein Wort selektiert, und möchte in dem Wort alle Buchstaben in Grossbuchstaben umwandeln. Im einzelnen passiert folgendes:

  1. Der Controller empfängt in seiner EventLoop den Event Capitalize Selection
  2. Es wird ein Capitalize Command erzeugt
  3. Der Capitalize fragt seinem Supplier (einen Text) nach dem Status und speichert den Status in einer Instanzvariable:
  4. Der erzeugte Capitalize Command wird ausgelöst und im Stack des Command-Processors gespeichert

Bei einem Undo werden folgende Aktionen ausgelöst:

  1. Der Controller empfängt den Undo Event
  2. Aus dem CommandProcessor wird vom Stack den zuletzt ausgeführten Command (im Beispiel Capitalize Command) geholt
  3. Im Capitalize Command wird die Funktion Undo ausgelöst
  4. Die Informationen um das Undo erfolgreich zu bewerkstelligen, steht in einer entsprechenden Instanzvariable des Capitalize Command

System of Pattern Command Processor

Inhalt Abbildung PDF Source OO-Designkurs
 |<    <     >    >|  Generated by CoCoDiL