我有一个具有标准格式的Excel工作表,它将具有多个工作表。我需要阅读Java中的图纸并将它们转换为对象并存储在数据库中。我目前正在使用简单工厂模式。我正在读取工作表名称,并基于工作表名称调用相应的转换器对象。这是实现这一目标的唯一方法还是有更好的方法。下面是示例代码。
FileInputStream fis = new FileInputStream(new File("test.xls"));
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fis);
int numberOfSheets = hssfWorkbook.getNumberOfSheets();
for (int i=0; i<numberOfSheets; i++) {
HSSFSheet sh = hssfWorkbook.getSheetAt(i);
String sname = sh.getSheetName();
switch (sname) {
case "Test" : //go to test convertor;
case "Test1": //go to test1 convertor
}
}
最佳答案
我会选择strategy design pattern
。
您可能有一个ISheetConverter
和定义其自己的转换逻辑的多个实现。
它看起来像:
@FunctionalInterface
inferface ISheetConverter {
POJOForSheet convert(SheetStream sheetFromIO);
}
同样,您现有的工厂类可以基于
ISheetConverter
返回适当的sh.getSheetName()
类(稍后将进行转换)。