Stiamo utilizzando Java come linguaggio di sviluppo back-end.
Un anno fa, abbiamo scritto un metodo che utilizza casi di switch basati su valori Enums. Dato che stiamo aggiungendo continuamente membri di enum e secondo i casi di aggiunta nel metodo, il metodo è cresciuto in misura molto grande. Attualmente, abbiamo circa 100 campi enumerati e il numero corrispondente di casi di switch.e.g.
class AClass{
enum option{ o1, o2, o3...on}
Value method(Option o){
switch(o){
case o1:
value = deriveValue(p1,p2,p3);
case o2:
value = deriveValue(p2,p3,p4);
.
.
.
case on:
value = deriveValue(p1,p2,p3);
}
}
}
Quindi ogni volta che arriva un requisito aziendale, aggiungiamo enum e il caso switch corrispondente. Ora il metodo è diventato troppo lungo e sembra ingestibile, se continueremo ad aggiungere la stessa logica in futuro.
Per pulire, abbiamo pensato di sostituire il caso con polimorfismo creando classi per lo stesso, ma, di nuovo, finiremo per creare n numero di classi.
Stiamo cercando una soluzione piccola, semplice e gestibile.
----------------- Aggiornamento ---------------------
Come suggerito, per approfondire, i valori di Enum sono nomi di campi per i quali un cliente ha bisogno di un valore. Pertanto, se un cliente ha bisogno del valore di un nuovo campo, aggiungiamo il campo in enum e la corrispondente definizione di come recuperare il valore per il campo appena aggiunto, aggiungendo il caso dell'interruttore corrispondente.
Nel caso dell'interruttore, abbiamo un metodo riutilizzabile comune, ad es. deriveValue () (Si prega di fare riferimento all'esempio fornito) a cui si passano i parametri necessari per derivare il valore per il campo appena aggiunto.