Wie wäre es, wenn du ein Observer Pattern implementierst, mit dem, was DieFritte vorgeschlagen hast.
Du Baust dir eine Klasse ZustandsInformation, die alle wesentlichen Informationen zu deiner GUI hält.
Diese Klasse implementiert das Interface Observer und beobachtet damit das die Klasse Observerable erweiterne GUI Objekt. Das ZustandsInformation Objekt wird per
Code:
Observable.addObserver(Observer o)
als Beobachter bei der GUI angemeldet.
Treten Änderungen in der GUI auf, die den Zustand ändern, wird dann eine Benachrichtigungsfunktion (Observerable.notifyObservers(...)) aufgerufen und du kannst die Informationen direkt beim Ändern weitergeben. Dadurch hast du deine ZustandsInformation immer aktuell.
Anstelle eines Pulls (ich möchte die GUI speichern, also brauch ich jetzt ein Pull auf die ganzen Daten und ich muss mich selbst drum kümmern) hättest du ein Push (Ich will die GUI Zustände speichern, ich brauche die Daten, wie gut, dass die on the fly bereits aufgezeichnet wurden).
Erspart dir das einmalige Durchlaufen der gesamten GUI und das rausfischen der Infos, auf der anderen Seite bekommst du so jede Änderung mit. Alle Änderungen müssen verarbeitet werden, wenn du das nicht filterst und es kann passieren, dass du bei vielen Änderungen, bevor die GUI gespeichert wird erstmal ne Menge Performance brauchst um die Infos immer aktuell zu halten.
Dazu gibt es diverse Tutorials im Netz, z.B. sowas
dieses hier.
Mehr Lesestoff dazu gibt's auch auf
Wikipedia.
Sollte deine GUI nur einie Zustände erreichen, dann könntest du auch drüber nachdenken das
State Design Pattern umzusetzen.
Es gibt auch noch ein paar andere Design Pattern, die du vlt für nützlich erachtest, ließ dich einfach mal schlau drüber.
Grüße
J.