Nella programmazione orientata agli oggetti, lo State è un design pattern comportamentale. Esso consente ad un oggetto di cambiare il proprio comportamento a run-time in funzione dello stato in cui si trova.
Struttura
Context: Definisce la classe del client e mantiene un riferimento ad un ConcreteState.
State: Definisce l'interfaccia, implementata dai ConcreteState, che incapsula la logica del comportamento associato ad un determinato stato.
ConcreteState: Implementa il comportamento associato ad un particolare stato.
Benefici e conseguenze
Tra i benefici dell'adozione di questo design pattern vi sono:
Il comportamento associato ad uno stato dipende solo da una classe (ConcreteState)
La logica che implementa il cambiamento di stato viene implementata in una sola classe (Context) piuttosto che con istruzioni condizionali (if o switch) nella classe che implementa il comportamento.