State Pattern und externe Daten

Hallo HaBo

Ich befasse mich gerade mit dem State Pattern und frage mich, wie innerhalb der States die Datenverarbeitung zu realisieren ist. Nun, bei jedem State-Wechsel wird ein neues Objekt erzeugt und das aktuelle dann wieder gelöscht. Nur, falls ich Daten in Members speichern möchte, dann gehen diese Daten bei jedem Übergang verloren wenn dafür nicht eine geeignete Implementation vorhanden ist. Ich frage mich gerade, wie so etwas wohl am sinnvollsten zu realisieren ist.

Folgende Ideen habe ich spontan:

1) Die zu verarbeitenden Daten sind im Kontext des State Pattern gespeichert und werden dann jeweils mittels Pointer oder Referenz bei der Verarbeitung übergeben. Nicht eine schlechte Wahl, was aber, wenn ich um die 10 Parameter für die Verarbeitung habe? In einer Struktur zusammenfassen?

2) Man könnte die Daten und Parameter in jedem State in Members speichern und gibt diese dann jeweils bei erzeugen des neuen Objekt mit dem Konstruktor mit. Bei vielen Parametern hätte der Konstruktor dann einfach viele Parameter oder dann fasst man diese wie unter 1) zu einem struct zusammen. Der Vorteil dieser Methode wäre, dass bei einem zusätzlichen Parameter nur das Interface des Konstruktors erweitert werden müsste.

3) ...spontan habe ich keine weitere Idee ...

Deshalb, wer von euch hat Erfahrungen mit dem State Pattern oder sonst noch eine gute Idee. Ich möchte nicht basteln sondern etwas seriöses realisieren.
 
alles was nicht spezifisch zum state gehört, aber dennoch im kontext gebraucht wird (ergo von mehreren states verwendet wird) lagert im kontext objekt ... jeder state kennt sein kontext objekt und kann dort anfragen ...

was state spezifisch ist liegt natürlich im state selbst

was übergangsspezifisch ist, ist parameter der übergangsfunktion

alternativ, wenn du befürchtest das kontextobjekt zu überfrachten, oder states bestimmte daten gruppenweise, aber nicht kontextglobal teilen, kann man auch eine storage klasse für sowas anlegen ... dann kennt entweder jeder state einer gruppe seine storageobjekte oder der kontext kennt die gruppenzugehörigkeit des states und gibt das/die betreffende(n) storage objekt(e) raus ...
 
Zurück
Oben