PDA

View Full Version : [java]abuso di instanceof, un errore?


MEMon
03-12-2010, 11:12
Salve gente, mi sono accorto che utilizzo spesso instanceof per sapere su quela classe sto lavorando, e credo che se mi trovo in questa condizione è perchè forse sto sbagliando qualcosa.

Sto usando hibernate per un progettino, e mi piace(rebbe?) realizzare il mio domain model con tecnica OO, quindi con una forte relazione tra tabelle.

Ora ad esempio sto scrivendo le relazioni per le tabelle che gestiscono dei "prodotti", e ho ad esempio prodotti che possono essere noleggiati, prodotti che possono essere venduti, prodotti che son documenti cartacei e quindi non si esauriscono e roba così.
Ho quindi creato diverse classi che estendono la classe base Prodotto, ognuno con le sue caratteristiche.
Il punto è che quando è il momento di gestirli, per sapere cosa farci con ognuno di essi, devo fare un instanceof per vedere di che tipo è il prodotto.
Non sto parlando della gestione delle categorie eh, quella è fatta diversamente, ma proprio dell'intelaiatura del "PRODOTTO".

Diversamente dovrei mettere una proprietà nella classe Prodotto che mi indichi il tipo, e verificare il tipo con un bel getType(), ma a parte che penso sia tanto brutto quanto utilizzare instanceof, sarebbe un campo in più nella tabella prodotto, campo che già esiste come "discriminatore" inserito velatamente da hibernate.

Qualche idea? :stordita:


Probabilmente sto cercando di forzare un modello ad oggetti quando invece basterebbe una megaclasse Prodotto con tutte le proprietà che mi servono.

pernacentus
03-12-2010, 11:24
Ciao, secondo me hai bisogno del pattern visitor, prova a guardare qua (http://en.wikipedia.org/wiki/Visitor_pattern).