Sto cercando di imparare come produrre codice orientato agli oggetti di qualità e ho studiato concetti come SOLID. Attualmente sto lavorando a un sistema di processori entità-componente per un piccolo motore di gioco.
Attualmente, l'ho implementato come tale:
- C'è un
ScreenStackche contiene una pila diScreens - Ogni
ScreenhaEntityManagereProcessManager. - Il
ProcessManageraggiorna tuttoProcesses dati entità daEntityManager. - Un
Processgestisce tutte le logiche di gioco, quindi deve essere in grado di usareScreenStackper possibilmente schermate push e pop. Può anche creare, rimuovere e modificare entità, quindi ha bisogno delEntityManagerdaScreen. Fondamentalmente unProcessha bisogno di sapere tutto sul gioco poiché ne influenza moltissimo, ma sembra sbagliato.
Come faccio a implementarlo meglio? Sembra che tutto abbia una chiara gerarchia delle dipendenze fino a quando non arrivi a un processo, dove viene espulso dalla finestra.
Sembra anche che ci sia un accoppiamento stretto quando vorrei spingere un nuovo schermo. Ad esempio, ho un processo in una schermata MainMenu che controlla la scelta del menu. Se viene cliccato "Nuovo gioco", ho bisogno di premere un nuovo schermo, che viene creato in quel momento. Ho letto che non dovrei lanciare in modo casuale new che sembra stia facendo.