Java:用于按特定顺序构建特定列的设计模式
我有一个N列的表(最多20-25列)。列列表(列及其顺序)由用户设置。所以这个列表在代码编写时是未知的 我有以下解决方案:Java:用于按特定顺序构建特定列的设计模式,java,design-patterns,Java,Design Patterns,我有一个N列的表(最多20-25列)。列列表(列及其顺序)由用户设置。所以这个列表在代码编写时是未知的 我有以下解决方案: class abstract AbstractColumnBuilder{ public TableColumn buildColumnA(){...} public TableColumn buildColumnB(){...} public TableColumn buildColumnC(){...} public TableColumn bu
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);
}
ListcolumnNames=。。。
for(字符串columnName:columnNames){
TableColumn column=builder.buildColumn(columnName);
}
然而,我不喜欢这个解决方案。首先,在我看来,从性能的角度来看,它不是很好——我们需要进行长案例检入循环。其次,开发人员可能忘记重写buildColumn方法
这种情况下是否有任何模式?因此,根据字母的不同,列的构建方式也会有所不同,对吗?带有某种抽象构建方法的枚举可能是一种解决方案,或者对构建列XXX进行一些注释,并对构建映射XXX进行一些反射->method@JDC对因此,idea可以使用反射。我想说这是工厂设计模式的典型用例:我不是Java开发人员,但对于使用额外功能组合对象/类,最好使用mixin,以下是我对Java的发现:在您的案例中,当一个开发人员想要创建一个包含其他3个类的功能的类(用于构建列)时,他必须以某种方式从所有这些类继承方法。有了mixin,就更简单了。