Sto progettando un programma responsabile di una GUI (con la grafica e l'input dell'utente gestito in un tipico ciclo di aggiornamento) che ha diversi stati:
-
Lo stato predefinito è un'animazione che viene continuamente eseguita nonostante qualsiasi input dell'utente.
-
È possibile richiamare uno stato di notifica che visualizza una notifica anziché l'animazione. Le notifiche hanno un timeout che dovrebbe auto-chiudersi dopo quell'ora e tornare all'animazione predefinita, potrebbe anche essere chiuso prematuramente dall'input dell'utente o da un'altra notifica di maggiore priorità.
-
Esiste anche una modalità di presentazione che riproduce un video clip e dovrebbe chiudersi automaticamente e tornare allo stato predefinito al termine. Tuttavia, una notifica importante può anche mettere in pausa il video ed essere visualizzato, dopo di che il video dovrebbe riprendere e tornare all'animazione predefinita una volta che finisce.
Altri stati sono previsti in futuro anche se i loro requisiti non sono ancora stati definiti. Ma come puoi vedere, l'architettura dovrebbe essere estensibile con la possibilità di aggiungere più stati. Pertanto, ogni stato dovrebbe essere in grado di controllare il proprio ciclo di vita e le modifiche di stato invocate per la GUI. Per ogni transizione di stato, lo schermo dovrebbe anche dissolvere lo stato corrente e affrontare quello successivo.
La mia domanda è: quale tipo di architettura OOP può essere utilizzata per ottenere questo risultato (al contrario delle istruzioni if / then nel ciclo di aggiornamento)? Ci sono schemi di progettazione (forse pattern di stato) che possono raggiungere questo obiettivo?
Nota: è in fase di sviluppo con SFML e c ++.