Design di classe di gioco basato su turni

-3

Ho scritto una base astratta per alcuni giochi a turni (come scacchi o tic-tac-toe) e ho scritto un gioco basato su questa base. E ho deciso di scegliere come progettare la gerarchia delle classi. Ecco due varianti per cui sono arrivato: E ecco il secondo screenshot (è troppo lungo per postare qui come immagine)

Nella prima variante tutte le classi in spazi dei nomi diversi (o Posso spostarle in uno spazio dei nomi) . Nella seconda variante tutte le classi sono separate da classi statiche e sono tutte in un unico spazio dei nomi. Il diagramma della prima variante sembra migliore, ma penso che il secondo sia più corretto. Quanto è meglio progettare questa struttura?

    
posta KgOfHedgehogs 06.01.2017 - 03:09
fonte

1 risposta

0

Bene, prima cosa:)

Non hai davvero bisogno di fare confusione con i namespace sul tuo caso. I namespace sono più uno strumento organizzativo che altro. La maggior parte delle volte, però, puoi lasciare questo a Visual Studio. L'IDE è davvero intelligente e individuerà il nome dello spazio dei nomi che dovresti usare in base alla struttura della cartella che hai nel tuo progetto.

Quindi, evita di usare tipi annidati. I tipi annidati sono OK per un piccolo insieme di necessità, non sul tuo caso. Non hai davvero bisogno della classe "Base": promuovi i tuoi tipi annidati in classi regolari e sei a posto.

Inoltre, non è necessario che le classi non utensili siano statiche. Sembrano più cose che potrebbero appartenere a una singola istanza di una bacheca rispetto all'intera app. Cosa faresti se volessi avere due partite di scacchi affiancate? Come regola generale, lascia la "globalità" della parola chiave static per le cose che dovrebbero veramente, veramente essere globali. Le tue classi "strumenti" sembrano probabilmente candidate alla parola chiave statica, quindi puoi lasciarla lì.

In alternativa, puoi cercare Iniezione di dipendenza. Anche se sembra un concetto grande e spaventoso, è una cosa talmente semplice che la maggior parte delle persone lo sta già facendo comunque a mano prima che i framework DI diventino una cosa. Non essere ingannato, anche se - Iniezione di dipendenza non è necessario, e talvolta non dovrebbe , essere utilizzato per mezzo di un DI Framework. Puoi farlo molto bene a mano senza problemi e senza la complessità aggiuntiva di un DI Framework.

    
risposta data 10.01.2017 - 14:29
fonte

Leggi altre domande sui tag