2010-04-04 94 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