Sono un ingegnere autodidatta, un principiante in Java e sto cercando di creare un modulo di creazione dei personaggi Dungeons and Dragons per un gioco più grande per consolidare la mia comprensione dei concetti chiave mentre apprendo le migliori pratiche per determinati scenari. Di seguito ho uno schema di implementazione, ma credo che ci siano scelte di progettazione migliori che potrei fare.
Sto cercando di seguire SOLID e Composition over Inheritance; Penso che questo piano segua quei concetti.
Come posso migliorare questo design di implementazione?
Attuazione
Conterrà
-
Un'interfaccia per caratteri che contiene getter e setter per Nome, Età, Altezza, ecc ...
-
Un'interfaccia per le razze di personaggi per incapsulare i tratti razziali in un modello portatile
-
Molteplici classi che implementano l'interfaccia di carattere e l'interfaccia di gara per l'obiettivo di creare il personaggio e la classe (RPG) del personaggio attraverso una fabbrica di classe.
- Questo potrebbe essere un sacco di classi da definire a causa delle possibilità di combinazioni. Esiste un modo migliore per istanziare un oggetto personaggio che astrae Class e Race in un unico oggetto.
-
Una classe di classe class avrebbe 2 argomenti, uno per la razza e uno per la classe per creare un oggetto personaggio e una dichiarazione caso-interruttore prenderebbe la razza e la classe per determinare la combinazione classe-razza e restituire un oggetto classe-razza (personaggio).
- Stesso collo a bottiglia come sopra.
L'esecuzione
- La classe Main richiederebbe l'input dell'utente per la Race del personaggio e la classe del personaggio per chiamare la Class Factory che restituisce un oggetto personaggio.
- Potrebbe valere la pena creare una classe astratta di caratteri che possa essere utilizzata per estendere le classi di combinazione di classi uniche, in modo che sia più facile capire quando si maneggiano gli oggetti personaggio.
Così:
Character character = new ElfWizard();
-
Quindi richiederà all'utente il nome dei caratteri che verrà usato per chiamare un metodo Setter per il personaggio.
-
Richiede di nuovo le specifiche relative alle dimensioni (Tiny, Small, Medium, Large, Extra Large) che chiamerà anche un setter.
- A seconda della razza, le scelte di dimensioni saranno limitate tramite un flusso condizionale.
-
Statistiche degli attributi di base a 10 e assegna punti statici per l'allocazione con un limite rigido a 20 che chiama setter per ogni input fornito.
- Può essere difficile da implementare in un'applicazione console. Sarebbe bello scoprire come farlo.
-
Quindi chiama i metodi dell'oggetto carattere per testare le abilità.
Riepilogo delle preoccupazioni
C'è un modo migliore di attaccare tutto in Main? Sarebbe meglio creare una classe di creazione di personaggi che verrà istanziata in main per chiamare un metodo di creazione dell'utente che richiede all'utente l'input per creare l'oggetto carattere e quindi richiede gli input per impostare le informazioni sui caratteri?
Esistono framework UI correnti che posso utilizzare per richiedere input invece della console?
Ho interesse a trasformarlo in un'API in seguito per memorizzare i valori in un database. Questo è così che posso creare un'applicazione Web per lavorare con questi metodi.
Grazie per qualsiasi feedback.