Intento:
Permettere ad un oggetto di cambiare il proprio comportamento quando cambia il suo stato interno. L’oggetto pare che cambi la propria classe,
Applicabilità:
Il pattern State è da utilizzare nei seguenti casi:
- Il comportamento di un oggetto dipende dal proprio stato e l’oggetto stesso deve cambiale il proprio comportamento in base allo stato durante l’esecuzione.
- Le operazioni da fare hanno istruzioni condizionali multiple e molto corpose che dipendono dallo stato dell’oggetto. Il pattern State inserisce ogni istruzione in una classe separata.
Partecipanti:
- Context → definisce una interfaccia per i Clients e mantiene una istanza di una sottoclasse di tipo ConcreteState la quale definisce lo stato corrente.
- State → definisce una interfaccia per incapsulare il comportamento associato ad un particolare stato di Context
- ConcreteState subclasses → ogni sottoclasse implementa uno specifico comportamento associato ad uno stato del contesto.
Conseguenze:
- Con il pattern State come prima conseguenza si ha che vengono localizzati i comportamenti specifici per ogni stato e vengono suddivisi i comportamenti in riferimento agli stati. Infatti tutti i comportamenti associati ad uno specifico stato vengono inseriti tutti all’interno di un oggetto
- Le transazioni di stato divengono esplicite
- Lo stato degli oggetti può essere condiviso









