Der UNDO - Wie strukturieren?

Crai

Mitglied
Hallo,
nun ich hoffe folgendes passt zum Bereich hier:
Ich würde es gern meinem lieben Anwender ermöglichen gemachte Aktionen rückgängig
zu machen. Es soll so ziemlich alles sinnvolles möglich sein, sei es das Verändern vom Aussehen und Wert eines Tables oder das Ändern von Farben in einem Bild,etc. Einfach alles was man seinem Benutzer in Form von Methoden zur Verfügung stellt.
Dass das ein komplexeres Thema ist,dessen bin ich mir bewusst.

Wie könnte man nun so ein Problem effektiv lösen?

Gruß,
Crai
 

Thomas Darimont

Erfahrenes Mitglied
Hallo!

Wie wärs denn wenn du alle Operationen die der User durchführen darf ganz im Sinne des Command Patterns ( http://www.google.de/search?q=Entwurfsmuster+Command+Pattern&hl=de&lr=&start=10&sa=N )
als Command Objekte defineren würdest und diese dann mittels der java.util.Stack oder (falls du auch "unendliches" redo haben willst) ArrayList Datenstruktur ablegen würdest?
So könntest du ganz easy einen UNDO Mechanismus kreieren...

HTH
Gruß Tom
 

Crai

Mitglied
Dank dir, für deine guten Hinweise!
Ich hab darauf mal ein bißchen weitergegoogelt und ein paar gute Sachen gefunden.

Sobald es geht werd ich das Ganze folgendermaßen aufziehen:
Die allgemeine Struktur meines Programms basiert auf dem Command-Pattern
siehe: Erklärung mit Beispiel

Für UNDO/REDO verwende ich das Memento-Pattern.
siehe: Erklärung und Anwendung

Das einzige worüber ich noch keine wirkliche Ahnung habe, ist wie ich das Ganze in eine solche ArrayList einbringen soll. Zum Beispiel frage ich mich, ob ich für UNDO eine ArrayList und für REDO eine andere verwenden soll, oder ob es nur eine für beides gibt...?
Wie müsste man da überlegen? Was wär geschickter und effektiver?

Ich werd mein Glück versuchen...

Gruß
Crai