我有一个具有标准格式的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()类(稍后将进行转换)。

07-24 09:28