Partage de technologie

Modèle d'état

2024-07-11

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

Modèle d'état

définition

Également appelé modèle de machine à états
En définissant différentes classes d'états pour encapsuler les comportements liés à des états spécifiques et en transférant la logique de jugement d'état à une série de classes représentant différents états, la logique de jugement complexe est simplifiée.

  • Le modèle d'état sépare l'état et le comportement, permettant à un objet de modifier son comportement lorsque son état interne change.
  • Chaque état correspond à une sous-classe, distribuant ainsi la logique de transition d'état aux sous-classes d'état, réduisant ainsi l'interdépendance.
  • Le client n'interagit généralement pas directement avec l'objet d'état, mais interagit avec l'objet d'état via la classe d'environnement (Context).

Scène applicable

  1. Le comportement d'un objet dépend de son état et il doit modifier son comportement au moment de l'exécution en fonction de cet état.
  2. Une opération contient une énorme structure multi-branches, et ces branches sont déterminées par l'état de l'objet.

Exemple standard

Insérer la description de l'image ici

Dans le diagramme de structure du modèle d'état, il contient généralement les rôles suivants :

  • Contexte (classe d'environnement) : Également appelée classe de contexte, c'est un objet à plusieurs états. Conservez une instance de la classe d’état abstraite State dans la classe d’environnement, qui définit l’état actuel.
  • State (classe d'état abstraite) : utilisé pour définir une interface pour encapsuler le comportement lié à un état spécifique de la classe d'environnement. Les méthodes correspondant à différents états sont déclarées dans la classe d'état abstraite et implémentées dans des sous-classes.
  • ConcreteState (classe d'état concrète) : C'est une sous-classe de la classe d'état abstraite. Chaque sous-classe implémente un comportement lié à un état de la classe d'environnement.

IState

public interface IState {
    void handle();
}