在其他人可以搜索的多个对象之间创建松散关系
Creating a loose relationship between multiple objects that others can search on
我有一份汽车制造商、型号和 trim 的列表。这些对象中的每一个都有不同的属性。前任。汽车制造商可以有进口与国产、运动与豪华等。我当前的设置如下所示,
public Manufacturer {
private String manufacturerName; //Getter&Setter as well
private List<Model> modelList; //Getter&Setter as well
//additional attributes
}
public Model {
private String modelName;
private List<Trim> trimList; //Getter&Setter as well
//additional attributes
}
public Trim {
private String trimType; //Getter&Setter as well
//additional attributes
}
public ContainerClass {
public List<Manufacturer> manufacturerList;
}
现在我可以将对象创建为 Mazda、3、Grand Touring 并将对象关联到列表中。但是,如果有人出现并且只想要一辆有天窗的汽车,那么必须深入研究每个可能的制造商和该制造商的每个型号以查看 trim 是否具有天窗属性,这感觉很浪费。有什么策略可以让开发人员(包括我自己)更轻松地做到这一点?
注意:我现在没有数据库,因为我没有真正的数据来填充数据库,这是一个权宜之计,直到我稍后获得该数据,所以请不要就说 "create a database" :)。我还从 JBehave 的 ExamplesTable 对象加载此信息。
您可以通过一些子流过滤制造商:
container.getManufacturerList().stream()
.filter(manufacturer ->
manufacturer.getModelList().stream().anyMatch(model ->
model.getTrimList().stream().anyMatch(trim ->
trim.getTrimType().equals("sunroof"))))
.collect(Collectors.toList());
我有一份汽车制造商、型号和 trim 的列表。这些对象中的每一个都有不同的属性。前任。汽车制造商可以有进口与国产、运动与豪华等。我当前的设置如下所示,
public Manufacturer {
private String manufacturerName; //Getter&Setter as well
private List<Model> modelList; //Getter&Setter as well
//additional attributes
}
public Model {
private String modelName;
private List<Trim> trimList; //Getter&Setter as well
//additional attributes
}
public Trim {
private String trimType; //Getter&Setter as well
//additional attributes
}
public ContainerClass {
public List<Manufacturer> manufacturerList;
}
现在我可以将对象创建为 Mazda、3、Grand Touring 并将对象关联到列表中。但是,如果有人出现并且只想要一辆有天窗的汽车,那么必须深入研究每个可能的制造商和该制造商的每个型号以查看 trim 是否具有天窗属性,这感觉很浪费。有什么策略可以让开发人员(包括我自己)更轻松地做到这一点?
注意:我现在没有数据库,因为我没有真正的数据来填充数据库,这是一个权宜之计,直到我稍后获得该数据,所以请不要就说 "create a database" :)。我还从 JBehave 的 ExamplesTable 对象加载此信息。
您可以通过一些子流过滤制造商:
container.getManufacturerList().stream()
.filter(manufacturer ->
manufacturer.getModelList().stream().anyMatch(model ->
model.getTrimList().stream().anyMatch(trim ->
trim.getTrimType().equals("sunroof"))))
.collect(Collectors.toList());