Sto cercando di trovare un modo elegante per implementare un algoritmo decisionale che consenta una facile manutenzione perché le condizioni per il processo decisionale potrebbero cambiare spesso.
Cercherò di essere più specifico con un esempio qui:
Diciamo che sto cercando di gestire un team di cuochi in cucina in un ristorante.
Ogni chef sa come cucinare 3 tipi di torte: torta di mele, torta di zucca e torta di lamponi e 2 tipi di pizza: pizza al formaggio e pizza al bacon. Sanno tutti come cucinare tutto.
Ora vorrei inviare ordini a questi capi riguardo a ciò che accadrà per i clienti.
Le condizioni sono:
Un capo può cucinare solo una torta alla volta. Se ordino ad uno chef di cucinare una torta di mele, ad esempio, non posso ordinargli di cucinare una torta di lamponi o una torta di zucca a meno che non sia stata fatta la torta di mele o mandare una richiesta di annullamento per la torta di mele.
Posso chiedere a uno chef di cucinare fino a 5 pizze alla volta, dato che è per clienti diversi.
Mi piacerebbe creare un algoritmo che restituisca l'insieme di ordini che posso inviare a uno chef specifico, riguardo a ciò che sta già cucinando.
Sto lavorando con c ++. Potrei scrivere una semplice istruzione switch / case, ma la manutenzione non sarebbe facile se le condizioni cambiano o vengono aggiunte nuove torte, e quindi ...
Sono piuttosto bloccato e non vedo come incapsulare le condizioni e il processo decisionale per ridurre l'accoppiamento tra le condizioni e consentire una facile manutenzione sulle condizioni di cottura della torta.
Come gestiresti un'implementazione complessa dell'algoritmo decisionale?