Aggiornamento:modello di Stato e guardia di
modello di Stato potrebbero un modo sbagliato per risolvere questo problema. Quindi, qualsiasi altro modello è benvenuto. Fondamentalmente sto cercando un modo per avere condizioni di protezione per ogni stato pur avendo un codice pulito e gestibile. In che modo i sistemi di routing lato front-end come, emberjs, ui-router e react-router implementano guard conditions
per evitare di entrare in uno stato specifico se la condizione non viene soddisfatta?
Voglio implementare una macchina a stati finiti usando State Pattern ma non riesco a capirlo. In breve è come:
If error -> error state
If A && B && C -> second state
If only A -> first state
In qualsiasi stato, in caso di errore, si passa allo stato di errore. input (eventi) A, B e C potrebbero arrivare a qualsiasi ordine ma se passano tutti andiamo al 2 ° stato. Se si applica solo l'input A, passiamo al 1 ° stato.
Il seguente diagramma di stato è tratto dal libro di lingue specifiche di Martin Fowler.
Nella descrizione che dice:
signorina Grant, ha un vano segreto nella sua camera da letto che viene normalmente bloccata e nascosto. Per aprirlo, deve chiudere lo sportello , quindi aprire il secondo cassetto nel suo petto e accendere la luce del comodino su nell'ordine. Una volta che questi sono fatti, il pannello segreto è sbloccato per lei da aprire.
sottolineo, che turning light
e opening 2nd drawer
può accadere in qualsiasi ordine . Idem come A, B e C.
Sulla base di commento @SQLPolice e il libro, ho tratto questa:
Ma il problema è, potrei avere (A & & B & & C & & D & & D & & E). In tal caso sarà complicato avere tutti gli stati intermedi di combinazione.
si dispone di uno stato di partenza, presumo? –
Cosa stai disegnando in ... UML/Flow ...? –
@DavidBarker, nessuno dei due. Ho solo bisogno di qualcosa di visivo per capire come implementare. – norbertpy