Voglio programmare un'applicazione di bilancio semplice. Nella mia domanda, il budget è diviso in periodi di budget (mesi per impostazione predefinita, ma può essere periodi bisettimanali o settimanali). In ogni periodo c'è un elenco di categorie di spesa.
L'utente può eseguire azioni diverse su una categoria, ad esempio registrare una spesa, allocare budget, creare una nuova categoria, chiudere una categoria esistente, ecc. Quindi ogni categoria dovrebbe avere uno stato diverso per ciascun periodo, ma le modifiche per lo stato particolare di un periodo specifico dovrebbe influenzare lo stato di categoria del periodo consecutivo (qualsiasi variazione di spesa / budget in gennaio dovrebbe cambiare lo stato di una categoria in febbraio). Quindi ogni periodo dovrebbe avere uno stato specifico di categoria che gli appartiene e su cui può operare, ma la categoria stessa dovrebbe essere in grado di vedere le modifiche apportate ed eseguire cambiamenti in altri stati.
Inizialmente pensavo di implementare una categoria come elenco dei suoi stati, ma il mio istinto mi diceva che non è un buon progetto. Mi piacerebbe davvero sentire se ci fosse un design migliore che potremmo usare qui.