代码之家  ›  专栏  ›  技术社区  ›  maayank

优雅地处理多个文件输入机制

  •  2
  • maayank  · 技术社区  · 14 年前

    我目前正在重构一个库以供Java内部使用。

    该库接收一个XML文档,并返回一个结果数据结构。 鉴于:

    • 客户机使用的类在实际处理之前在库中传递

    处理文件的最佳体系结构是什么?

    public class ILuvUsers {
    
    public Result getResult(String path) {
        return getResult(ElementsLoader.loadIntermediateType(path));
    }
    
    public Result getResult(InputStream stream) {
        return getResult(ElementsLoader.loadIntermediateType(stream));
    }
    
    private Result getResult(IntermediateType itype) {
        //... do stuff and return Result
    }
    }
    
    public class ElementsLoader {
    public static IntermediateType loadIntermediateType(final InputStream is) {
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
        return doSomethingWithDocument(doc);
    }
    
    public static IntermediateType loadIntermediateType(final String path) {
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(path);
        return doSomethingWithDocument(doc);
    }
    }
    

    我需要在每个类中为InputStream和字符串创建重载的方法对我来说就像是一种代码味道。 如果第二天我需要支持使用'文件'类型呢? 我希望以某种方式自动支持DocumentBuilder解析方法的每个重载。

    1 回复  |  直到 14 年前
        1
  •  2
  •   S.Lott    14 年前

    其实也没那么糟。域名有限,增长不快。

    这通常是某种 InputStream .

    给予 String ,您要打开 Stream 溪流

    给予 溪流

    给予 File ,您将要打开 使用 装载机。

    这应该涵盖几乎所有可能的基础,因为您可以从几乎任何东西中生成输入流。