DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/book2.xml");
NodeList nodeList = document.getElementsByTagName("作者");
變數左邊宣告型別,右邊未出現 new 卻能直接賦值,這是怎麼回事?
這些類別皆採用工廠模式:靜態/實例方法內部封裝 new 邏輯,回傳已建構好的物件參考。開發者只需接收回傳值,無須關心建構細節。
DocumentBuilderFactory.newInstance():靜態工廠方法,回傳具體實作類別實例(如 com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl)。factory.newDocumentBuilder():實例工廠方法,建立並回傳 DocumentBuilder 子類別物件。builder.parse(...):解析 XML 並建構 DOM 樹,回傳 Document 介面實作物件。document.getElementsByTagName(...):查詢並回傳 NodeList 實作物件。DocumentBuilderFactory)而非具體類別,便於切換解析器實作(Xerces、Crimson 等)。「左邊型別 = 右邊方法呼叫」是標準的工廠方法賦值,右邊方法內部完成物件建立並回傳參考,左邊變數持有該參考。這不是語法糖,而是經典設計模式在 Java 標準庫中的應用。