首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java DOM 解析 XML:無 new 關鍵字的賦值原理解析

     編輯:程式設計綜合問答

現象

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 實作物件。

為什麼不直接 new?

  1. 解耦:程式碼依賴介面(DocumentBuilderFactory)而非具體類別,便於切換解析器實作(Xerces、Crimson 等)。
  2. 複雜初始化封裝:建構過程可能涉及配置檔讀取、服務提供者查找(SPI)、命名空間感知設定等。
  3. 單例/池化控制:工廠可決定是否回傳同一實例或從池中取出。

總結

「左邊型別 = 右邊方法呼叫」是標準的工廠方法賦值,右邊方法內部完成物件建立並回傳參考,左邊變數持有該參考。這不是語法糖,而是經典設計模式在 Java 標準庫中的應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved