Technologieaustausch

Zustandsmuster

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Zustandsmuster

Definition

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

  1. Das Verhalten eines Objekts hängt von seinem Zustand ab und es muss sein Verhalten zur Laufzeit basierend auf dem Zustand ändern.
  2. Eine Operation enthält eine riesige Struktur mit mehreren Zweigen, und diese Zweige werden durch den Status des Objekts bestimmt.

Standardbeispiel

Fügen Sie hier eine Bildbeschreibung ein

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.

IState

public interface IState {
    void handle();
}