Domanda di gerarchia di classe: implementa classi separate per lo stesso comportamento? [chiuso]

-1

NOTA: la lingua che sto utilizzando è C #.

Al momento sto lavorando a un mingame "The Quest" in cui c'è un giocatore e alcuni nemici. Il mio progetto include finora una classe astratta di base chiamata 'Mover' e un'interfaccia chiamata 'IAttacker', poiché l'oggetto Player e l'oggetto / i nemici si muovono e attaccano, anche se in modi diversi. Tuttavia penso anche che questo potrebbe non essere necessario perché potrei semplicemente creare una grande interfaccia di combinazione, "IMoveAttack" o qualcosa del genere. Inoltre, il mio amico che mi ha dato la sfida ha raccomandato che la classe Armi (il giocatore può raccogliere armi lungo la strada che giace sul pavimento) per essere una sottoclasse di Mover, anche se le Armi non hanno realmente bisogno di muoversi, hanno solo bisogno di deporre le uova in posti casuali ad ogni livello.

Qual è il miglior principio di progettazione in questo caso?

    
posta naiveai 12.09.2014 - 06:38
fonte

2 risposte

0

Più interfacce sono meglio di una grande. Assicurati che le tue classi concrete abbiano effettivamente bisogno dell'interfaccia. L'arma non è davvero un motore. Vorrei andare per qualcosa del tipo:

IMover
ISpawner
IAttacker
IDefender

Character : IMover, ISpawner, IAttacker, IDefender
Player : Character
Enemy : Character
Weapon : ISpawner
    
risposta data 12.09.2014 - 15:18
fonte
1

Ti suggerisco di iniziare guardando i principi SOLID dello zio Bob . Segregazione dell'interfaccia: assicurati che nessun client debba dipendere da metodi che non usa. e una singola responsabilità: avere una sola ragione per cambiare.

Se riesci a implementare questi 5 principi di progettazione è un buon inizio per scrivere un buon codice. I problemi saranno molto più facili da risolvere.

    
risposta data 12.09.2014 - 07:29
fonte

Leggi altre domande sui tag