Java:用于按特定顺序构建某些列的设计模式

时间:2017-03-31 10:00:39

标签: java design-patterns

我有一个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方法。

这种情况有没有模式?

0 个答案:

没有答案