PDA

View Full Version : [JAVA] Parametrizzare l'implementazione di un metodo (serializzandolo su db?)


tylerdurden83
13-01-2012, 15:52
Boys, stavo riguardando del codice e cercando di trovare un modo per semplificare il tutto. Posto subito un pochino di codice molto semplificato:

public class Item implements Serializable{
private String nomeItem;
...
public void setValue(){....}
...
}


Diciamo che questa classe ha varie variabili di istanza e metodi oltre a quello in questione. E' mappata da una tabella su db, quindi posso costruire istanze di item a partire dalla tabella, e vice versa salvare su db eventuali istanze di item.

Fin qui tutto ok. Ora il problema, ho alcuni item particolari, ad es:

public class ItemRaddoppiatore extends Item{
@override
public void setValue(){
// codice specifico, ad es
this.valore = this.valore * 10;
}
}


piuttosto che:

public class ItemElevatore extends Item{
@override
public void setValue(){
// codice specifico, ad es
this.valore = this.valore^10;
}
}


In pratica, ho 1 classe base, Item, che va bene per modellare migliaia di righe della tabella corrispondente, ma sono costretto ad avere vere e proprie classi per gestire alcune delle entry.

Quello che mi piacerebbe fare quindi sarebbe serializzare il metodo setValue su database come campo addizionale di ogni entry sulla tabella, in modo da non aver più bisogno di scolpire / dover creare vere e proprie subclass di item per alcune entry.

Problema: Method è una classe non serializable, quindi non sono ben sicuro di come fare a serializzare solo quello
Problema: serializzare intere classi non va bene perchè se poi cambio / aggiungo una virgola alla classe, quella su db non matcha la nuova versione e va giustamente in exception (anche se magari il metodo in questione non è stato toccato).

Qualche idea? :mc: