Condivisione della tecnologia

Modello di stato

2024-07-11

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

Modello di stato

definizione

Chiamato anche modello di macchina a stati
Definendo diverse classi di stati per incapsulare comportamenti relativi a stati specifici e trasferendo la logica del giudizio sullo stato a una serie di classi che rappresentano stati diversi, la complessa logica del giudizio viene semplificata.

  • Il modello di stato separa stato e comportamento, consentendo a un oggetto di modificare il proprio comportamento quando cambia il suo stato interno.
  • Ogni stato corrisponde a una sottoclasse, distribuendo così la logica di transizione dello stato alle sottoclassi dello stato, riducendo l'interdipendenza.
  • Il client solitamente non interagisce direttamente con l'oggetto stato, ma interagisce con l'oggetto stato attraverso la classe d'ambiente (Context).

Scena applicabile

  1. Il comportamento di un oggetto dipende dal suo stato e deve modificare il suo comportamento in fase di esecuzione in base allo stato.
  2. Un'operazione contiene un'enorme struttura multi-ramo e questi rami sono determinati dallo stato dell'oggetto.

Esempio standard

Inserisci qui la descrizione dell'immagine

Nel diagramma della struttura del modello di stato, solitamente contiene i seguenti ruoli:

  • Contesto (classe d'ambiente): Chiamato anche classe di contesto, è un oggetto con più stati. Mantieni un'istanza della classe di stato astratta State nella classe di ambiente, che definisce lo stato corrente.
  • State (classe di stato astratta): utilizzato per definire un'interfaccia per incapsulare il comportamento relativo ad uno stato specifico della classe di ambiente. I metodi corrispondenti ai vari stati vengono dichiarati nella classe stata astratta e implementati in sottoclassi.
  • ConcreteState (classe di stato concreto): è una sottoclasse della classe di stato astratta. Ogni sottoclasse implementa un comportamento relativo ad uno stato della classe di ambiente.

IState

public interface IState {
    void handle();
}