devo enum CarBrand
:Come organizzare correttamente la struttura di due enumerazioni con relazione molti a molti tra loro in termini di architettura e classi dell'applicazione?
public enum CarBrand {
BMW, MERCEDES, VOLKSWAGEN, AUDI, FORD, OPEL
}
e enum CarBodyType
:
public enum CarBodyType {
SEDAN, MINIVAN, VAN
}
rapporto tra loro è molti a molti. Cioè un marchio automobilistico può avere diverse varianti di tipo di carrozzeria, e un tipo di carrozzeria ha diverse marche.
Come definire un tale modello di relazione entità nel mio codice con queste enumerazioni?
Forse ho bisogno di fare campo in ogni enum come un set parametrizzato da un'altra enumerazione?
public enum CarBrand {
BMW, MERCEDES, VOLKSWAGEN, AUDI, FORD, OPEL;
private Set<CarBodyType> bodyTypes;
public Set<CarBodyType> getBodyTypes() {
return bodyTypes;
}
public void setBodyTypes(Set<CarBodyType> bodyTypes) {
this.bodyTypes = bodyTypes;
}
}
e
public enum CarBodyType {
SEDAN, MINIVAN, VAN;
private Set<CarBrand> brands;
// getter and setter
}
questa è una buona soluzione? O sarebbe meglio implementare tali relazioni tramite una terza entità di giunzione? Se sì, quale dovrebbe essere? Come dovrebbe essere progettata questa entità e quali campi dovrebbe contenere?
@Bhesh: Tranne che Minivan e un furgone non sono auto ... ho usato il veicolo per evidenziarlo all'OP. Quello che penso sia sbagliato a quel livello è il suo uso di "Car". –
Grazie! Questa è solo una soluzione? È sempre necessario creare un'entità terza giunzione? O sto semplicemente scegliendo il miglior campione? Ad esempio, che dire di [questo caso] (http://en.wikipedia.org/wiki/Many-to-many_ (data_model))? Se 'Book' e' Author' sono enumerati. La tua soluzione è comune e attuale anche per questo esempio? O è solo per la mia situazione specifica? –