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
Il comportamento di un oggetto dipende dal suo stato e deve modificare il suo comportamento in fase di esecuzione in base allo stato.
Un'operazione contiene un'enorme struttura multi-ramo e questi rami sono determinati dallo stato dell'oggetto.
Esempio standard
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.