java - 读取多张 Excel 的最佳设计模式是什么

标签 java design-patterns

我有一个标准格式的 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);
}

您现有的工厂类还可以根据 sh.getSheetName() 返回适当的 ISheetConverter class (稍后将进行转换 -上)。

关于java - 读取多张 Excel 的最佳设计模式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51463780/

相关文章:

c++ - 在不向模型添加代码的情况下对模型添加操作

java - 谁定义了状态模式中的状态转换?

java - 通过 jboss 上的 resteasy 为 jaxb 配置输出 XML 版本的最佳方法

java - 对 Jersey 休息服务的并发请求

java - YCSB zipf分布的alpha参数是多少

java - Android-如何消除这些gradle/proguard警告?

c# - ORM 和图层

c++ - 工厂方法设计模式和桥接模式有什么区别?

java - java中的类设计(设计模式)思想?

java - + 字符串类中的运算符