# State Patter -> Zustand auswirkung auf Gui



## JavaPhil (30. Mai 2010)

Hallo,

ich bastel gerade an einer kleinen Application unter Nutzung des Zustandsmusters.
Ich habe das ganze in Model, View und Controller eingeteilt, wobei das Model verschiedene Zustände hat. Meine Frage ist wie sollte ich vom Zustand abhängige Darstellungen in der View behandeln. Ich habe zum Beispiel einen Button der abhängig vom Zustand des Models einen anderen Text anzeigen soll. Wenn man die Komponenten einzeln betrachtet würde ich sagen das der Button Text nichts mit dem Model zu tun hat (! Trennung Präsentation von Model!), also fänd ich es nicht gut eine getButtonText() Methode in den Zuständen einzurichten. Sollte ich Anhand des Zustands den Buttontext setzen also:
if(model.getAktuellerZustand().equals(zustand1)) setButtonText("text1");
if(model.getAktuellerZustand().equals(zustand2)) setButtonText("text2");
if(model.getAktuellerZustand().equals(zustand3)) setButtonText("text3");...????
Aber das find ich auch doof. Soll nicht gerade das StatePattern solche Sachen vermeiden. Oder nehme ich das ganze zu genau?

Was wäre den hier BestPractise???

Danke
Philipp


----------



## Marco13 (31. Mai 2010)

Solche Design- und Architekturfragen sind immer schwierig, wenn man den Kontext nicht kennt, aber ... anhand der bisher genannten Stichworte: Das Modell sollte einen Listener haben, der mitkriegt, wenn der Zustand sich ändert. Die View ist so ein Listener, und aktualisiert den Buttontext bei einer Änderung im Modell entsprechend...


----------



## JavaPhil (31. Mai 2010)

Ja, der View ist ein Listener auf das Model. Er bekommt so mit, wenn sich dessen Zustand ändert. 
Es ist is deiner Meinung nach ok wenn ich an diesem Punkt über eine If-Konstruktion den Buttontext festlege...?!. So wie oben beschrieben?.

Danke
Philipp


----------



## Marco13 (31. Mai 2010)

Ich bin davon ausgegangen, dass das Pseudocode ist. Je nachdem, wie das konkret im echten Programm aussieht oder aussehen würde, könnte man sich da was überlegen... Wenn es um 100 Zustände geht, wären 100 if-Abfragen eher unschön. Vielleicht könnte man dann mit einer Map was machen oder so, aber das ist nur ins Blaue geraten...


----------

