Utilizzo di uno switch rispetto a più classi e una hashmap

2

Quindi ho un file da elaborare che contiene un comando su ogni riga. Attualmente è implementato in questo modo (questo è un incarico di refactoring):

hashmap.get(commandStr).sendCommand();

Gli oggetti (4) all'interno dell'hashmap, ciascuno contiene un metodo sendCommand diverso.

Il fatto è che ognuna di queste implementazioni di metodo sono solo 2 o 3 righe e questo sembra un po 'sbagliato perché questi oggetti non memorizzano nulla e hanno solo un metodo.

Dovrei invece farlo in uno switch e invece elaborare tutti i comandi in una funzione?

C'è un altro modo per farlo? Qualunque modello di progettazione ha significato per questo? Qualunque altra ragione l'implementazione iniziale è cattiva o buona?

    
posta Farid Nouri Neshat 19.11.2015 - 05:08
fonte

1 risposta

5

La cosa buona di una dichiarazione switch è che è veloce, se hai bisogno di velocità. La cosa brutta è che in un processore di comandi manca di flessibilità; se è necessario aggiungere un nuovo tipo di comando, è ora di riscrivere il processore dei comandi.

Con questa tabella di hash per il decision making è meglio, ma con i metodi hardcoded per le azioni di comando, devi affrontare lo stesso problema di ricodifica del processore dei comandi se viene aggiunto un nuovo comando.

Se fossi nei tuoi panni, penserei a un'interfaccia oa un metodo astratto per definire un comando e forse gestire alcune delle attività più comuni e avere una classe figlia per ogni comando. Il processore potrebbe avere o chiamare un metodo factory in grado di creare un'istanza della classe di comando corretta. In questo modo, man mano che il tuo set di comandi si evolve, meno del tuo codice ne risentirebbe. Spero che questo sia un aiuto.

    
risposta data 19.11.2015 - 06:08
fonte

Leggi altre domande sui tag