【发布时间】:2020-08-21 18:50:47
【问题描述】:
我正在使用 Builder(pattern) 来构建和返回一个对象。有一个定义的顺序,具体取决于如何调用方法的可用参数的数量。目前我使用 if-else 块。是否有 java 8 或更高版本的替代方案来动态使用构建器?
public Task createTask(String[] params){
if(params.length < 1){
throw new IllegalArgumentException();
}
else if(params.length == 1){
return new TaskBuilder().setOne(params[0]).build();
}
else if(params.length == 2){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1]).build();
}
else if(params.length == 3){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1])
.setThree(params[2]).build();
}
else if(params.length == 4){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1])
.setThree(params[2])
.setFour(params[3]).build();
}
else if(params.length == 5){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1])
.setThree(params[2])
.setFour(params[3])
.setFive(params[4]).build();
}
else{
throw new IllegalArgumentException();
}
}
【问题讨论】:
-
理论上你可以有一个对“setOne”、“setTwo”等的函数引用数组,然后对其进行迭代。
-
@Taschi 我不知道你到底是什么意思。您能否添加一两句话来说明我如何实施您的方法,或者给我一个合适的搜索词,以便我自己用谷歌搜索?
-
查看stackoverflow.com/questions/49234884/…,有一些我想到的例子。
标签: java builder-pattern