我有一个N列的表(最多20-25)。列(列及其顺序)列表由用户设置。所以这个列表在代码编写时间是未知的。
我有以下解决方案:
class abstract AbstractColumnBuilder{
public TableColumn buildColumnA(){...}
public TableColumn buildColumnB(){...}
public TableColumn buildColumnC(){...}
public TableColumn buildColumn(String columnName){
switch(columnName){
case "a":return buildColumnA();
case "b":return buildColumnB();
case "c":return buildColumnC();
}
return null;
}
}
class ConcreteColumnBuilder extends AsbtractColumnBuilder{
public TableColumn buildColumnD(){...}
public TableColumn buildColumnE(){...}
@Override
public TableColumn buildColumn(String columnName){
switch(columnName){
case "d":return buildColumnD();
case "e":return buildColumnE();
default:return super.buildColumn(columnName);
}
}
}
和用法
List<String>columnNames=...
for(String columnName:columnNames){
TableColumn column=builder.buildColumn(columnName);
}
但是,我不喜欢这个解决方案。首先,从性能的角度来看,它似乎并不是很好 - 我们需要在循环中进行长时间检查。其次,开发人员可能会忘记覆盖buildColumn方法。
这种情况有没有模式?