2010-04-04 113 views
4

正如others指出,在Java中,默認W3C DOM庫,一個是需要使用的文檔對象的工廠要素,即:爲什麼元素創建需要DOM中的文檔對象?

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 

Document d; 
Element e; 

e = d.createElement("tag"); 

爲什麼有此必要?爲什麼從概念上說,一個方法不能在不知道所有目標文檔的情況下創建一個XML元素?爲什麼我不能僅僅使用'new'來實例化呢?

回答

4

因爲DOM API是基於接口的。 DocumentElement都是接口,由API的各種實現來實現。因此,您不能僅實例化元素,因爲您不知道要使用哪個實現。所有節點的創建都必須使用工廠方法來完成。這是DOM API設計人員的設計選擇。

如果你想要一個更容易生活的DOM API,試試XOM,JDOMDOM4J

+2

我會回答「因爲DOM API設計的很糟糕......」但我想你的是更徹底的:)這是API中的一個:他們已經在每一個設計模式中擠壓而沒有明顯的真正理解他們。 – Esko 2010-04-04 11:10:15

+0

這很糟糕,是的,但幸好我們通常可以使用其中一種選擇。 – skaffman 2010-04-04 11:15:17

+0

接下來的問題是爲什麼CreateElement()不是靜態的? – maayank 2010-04-04 11:17:08

相關問題