Tôi có enum CarBrand
:Làm thế nào để tổ chức chính xác cấu trúc của hai enums với mối quan hệ nhiều-nhiều giữa chúng về kiến trúc và các lớp của ứng dụng?
public enum CarBrand {
BMW, MERCEDES, VOLKSWAGEN, AUDI, FORD, OPEL
}
và enum CarBodyType
:
public enum CarBodyType {
SEDAN, MINIVAN, VAN
}
Mối quan hệ giữa họ là nhiều nhiều. I E. một thương hiệu xe hơi có thể có một số biến thể của loại thân xe, và một loại thân xe có một số thương hiệu.
Làm thế nào để xác định mô hình quan hệ thực thể đó trong mã của tôi với những enums này?
Có lẽ tôi cần tạo trường trong mỗi enum dưới dạng tập hợp tham số bởi một enum khác?
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;
}
}
và
public enum CarBodyType {
SEDAN, MINIVAN, VAN;
private Set<CarBrand> brands;
// getter and setter
}
Đây có phải là một giải pháp tốt? Hoặc sẽ tốt hơn nếu thực hiện các mối quan hệ như vậy thông qua một thực thể đường giao nhau thứ ba? Nếu vậy, nó nên là gì? Thực thể này nên được thiết kế như thế nào và nó nên chứa những trường nào?
@Bhesh: Ngoại trừ việc cho rằng Minivan và Van không phải là xe hơi ... Tôi đã sử dụng Xe để làm nổi bật điều này cho OP. Những gì tôi nghĩ là sai ở cấp độ đó là việc anh ta/cô ấy sử dụng 'Xe hơi'. –
Cảm ơn! Đây có phải là giải pháp duy nhất không? Nó luôn luôn là cần thiết để tạo ra thực thể ngã ba thứ ba? Hay tôi chỉ chọn không phải là mẫu tốt nhất? Ví dụ về [trường hợp này] (http://en.wikipedia.org/wiki/Many-to-many_ (data_model))? Nếu 'Book' và' Author' là enums. Giải pháp của bạn có phổ biến và thực tế cho ví dụ này không? Hay nó chỉ dành cho tình huống cụ thể của tôi? –