Esempio:
Hai un gioco con diverse scuole di magia (fuoco, ghiaccio, ecc.). Ogni scuola ha una serie di proprietà relative a caratteristiche indipendenti del gioco, come ad esempio:
- stringhe da visualizzare sulla GUI (dati generici archiviati in memoria)
- grafica, suoni e altri file da caricare se necessario
- comportamenti diversi (codice), ad es. ogni scuola di magia ha una diversa interazione con vari tipi di terreno
Posso pensare a due design per l'implementazione di questo, ma non mi piace particolarmente nessuno dei due.
- Potrei creare una classe astratta
MagicSchool
che contenga tutte le varie proprietà di una determinata scuola. Questo rende la classeMagicSchool
dipendente da molte caratteristiche distinte del gioco (GUI, SFX, altre aree di logica di gioco, ecc.), Che sembra una inutile mescolanza di preoccupazioni (qualcosa di una classe di Dio). - Potrei inserire i dati GUI / SFX / etc per ogni scuola nei sistemi GUI / SFX / etc come array. Ma poi il codice per le scuole magiche viene sparpagliato in tutto il progetto (anche se in posti molto logici).
Quindi in questo caso ci sono due assi lungo i quali strutturare il codice: le varie scuole di magia e le varie funzionalità in cui sono presenti le scuole.
In termini di chiarezza e manutenibilità, quale delle due soluzioni di cui sopra dovrei preferire? O forse c'è un altro modo che non ho ancora considerato?