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.
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.