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.
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.