Esempio di codice da realizzare:
Una macchina distributrice del caffè lavora come un automa: nella versione semplificata accetta SOLO monete da 50 centesimi ed eroga il caffè solo quando si arriva a 1 Euro. Fino a che non si sono inseriti tutti i soldi si possono richiedere indietro (nel nostro caso semplificato solo dopo aver inserito una moneta da 50 centesimi) premendo il tasto annulla. Quando il caffè è pronto il sensore di pressione sotto il bicchierino fa tornare allo stato di partenza quando il cliente ritira il caffè.
In pratica l'automa prevede gli stati di "partenza", "50cent" e "caffe".
da "partenza" a "50 cent" con moneta da 50 cent
da "50cent" a "caffè" con moneta da 50 cent
da "50cent" a "partenza" con tasto annulla
da "caffè" a "partenza" con ritiro del bicchierino
Negli altri casi non si ha alcun effetto e si rimane nello stesso stato.
Usare il pattern State per gestire la macchina del caffè. I metodi richiamabili in ogni stato sono moneta(), annulla(), ritira().
Altri esempi: ventilatore a diverse velocità https://sourcemaking.com/design_patterns/state/java/1