Per il mio progetto personale ho bisogno di memorizzare forme 2D in un database Postgres. Ad esempio Cerchio, Pentagono, Rettangolo e così via. All'inizio l'ho fatto in questo modo: tutte le forme sono ereditate da una classe astratta chiamata Shapes, che ha alcuni metodi con cui ho bisogno che ogni oggetto esegua su se stesso, ad esempio (sto usando java con i dati di Spring):
for(Shape shape : shapes){
shape.getArea();
}
Questo è buono nel codice, ma non conosco un buon modo per archiviarlo in un database. Ogni forma ha alcuni parametri che sono diversi dagli altri (raggio per cerchio, altezza e lunghezza per rettangolo ecc.) Quindi sembra che mi servano molte tabelle per ogni tipo di geometria. Ma come fare riferimento a ciascuna forma da un'altra tabella?
In questo momento cerco di risolvere questo problema con una singola classe chiamata Geometry. Ha un campo tipo e una serie di parametri ad esso collegati. Cerchio, ad esempio, avrà un record nella tabella Geometria e un record nella tabella Parametri. Questa classe ha anche tutti i metodi necessari per ogni forma disponibile, come questa:
getArea(){
switch(type){
case circle: ....
case pentagon: ...
}
}
Ma mi chiedo se ci sono modi più eleganti per risolvere questo problema?