你可以定义一个接口,比如
ProductTypeCreator
public interface ProductTypeCreator {
boolean isApplicable(String val1, String val2, String val3);
ProductType create(String val1, String val2, String val3);
}
然后,为每个特定的if情况创建一个实现。
然后,您可以拥有一个创建者列表,并将您的方法重构为类似的内容。
public ProductType createProductType(String val1, String val2, String val3) {
// this should already be instantiated
List<ProductTypeCreator> creators;
return creators
.stream()
.filter(creator -> creator.isApplicable(val1, val2, val3))
.map(creator -> creator.create(val1, val2, val3))
.findFirst()
.get();
}
这样,你就可以避开国际单项体育联合会。