2
我目前正在重構Java內部使用的庫。優雅地處理多個文件輸入機制
庫接收XML文檔,並返回結果的數據結構。 鑑於:
- 有兩個客戶爲這個圖書館,有一個XML文檔作爲一個InputStream和其他有一個字符串的文件路徑。
- 客戶端使用圍繞通過在磁帶庫中進行實際處理
前級是什麼用於處理文件的最佳架構?
目前,它是按以下方式處理(不相關的細節被省略,類的名稱更改):
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創建重載的方式和字符串似乎是一個代碼聞到我。 如果第二天我需要支持使用「文件」類型,該怎麼辦? 最好我想以某種方式automagically支持DocumentBuilder的解析方法的每個重載。
由於這是不是真的有可能在Java中,這一切似乎是一個普通不過的情況下,是什麼這個問題的最佳做法?你見過任何好的解決方案嗎?
最後我做了你的建議,只使用InputStream。 如果用戶想要使用路徑/文件,那麼他可以使用FileInputStream。 – maayank 2010-08-05 14:01:35