Auch State-Machine-Pattern genannt Durch die Definition verschiedener Zustandsklassen zur Kapselung von Verhaltensweisen im Zusammenhang mit bestimmten Zuständen und durch die Übertragung der Zustandsbeurteilungslogik auf eine Reihe von Klassen, die unterschiedliche Zustände darstellen, wird die komplexe Beurteilungslogik vereinfacht.
Das Zustandsmuster trennt Zustand und Verhalten und ermöglicht es einem Objekt, sein Verhalten zu ändern, wenn sich sein interner Zustand ändert.
Jeder Zustand entspricht einer Unterklasse, wodurch die Zustandsübergangslogik auf die Zustandsunterklassen verteilt wird, wodurch die gegenseitige Abhängigkeit verringert wird.
Der Client interagiert normalerweise nicht direkt mit dem Statusobjekt, sondern über die Umgebungsklasse (Kontext) mit dem Statusobjekt.
Anwendbare Szene
Das Verhalten eines Objekts hängt von seinem Zustand ab und es muss sein Verhalten zur Laufzeit basierend auf dem Zustand ändern.
Eine Operation enthält eine riesige Struktur mit mehreren Zweigen, und diese Zweige werden durch den Status des Objekts bestimmt.
Standardbeispiel
Im Zustandsmusterstrukturdiagramm enthält es normalerweise die folgenden Rollen:
Kontext (Umgebungsklasse): Auch Kontextklasse genannt, handelt es sich um ein Objekt mit mehreren Zuständen. Pflegen Sie eine Instanz der abstrakten Zustandsklasse State in der Umgebungsklasse, die den aktuellen Zustand definiert.
Zustand (abstrakte Zustandsklasse): Wird zum Definieren einer Schnittstelle verwendet, um das Verhalten im Zusammenhang mit einem bestimmten Zustand der Umgebungsklasse zu kapseln. Methoden, die verschiedenen Zuständen entsprechen, werden in der abstrakten Zustandsklasse deklariert und in Unterklassen implementiert.
ConcreteState (konkrete Zustandsklasse): Es ist eine Unterklasse der abstrakten Zustandsklasse. Jede Unterklasse implementiert ein Verhalten, das sich auf einen Zustand der Umgebungsklasse bezieht.