2010-04-04 2 views
4

Как отметил others в Java, с библиотеками DOM W3C, по умолчанию, один требуется использовать документ объекта фабрики к элементам, т.е .:Почему для создания элемента требуется объект документа в DOM?

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

Document d; 
Element e; 

e = d.createElement("tag"); 

Почему это необходимо? Почему концептуально метод не может создать элемент XML без знания всего целевого документа? Почему я не могу просто создать экземпляр, используя «новый» или что-то в этом роде?

ответ

4

Поскольку DOM API сильно основан на интерфейсе. Document и Element - оба интерфейса, реализованные различными реализациями API. В результате вы не можете просто создать экземпляр элемента, поскольку вы не знаете, какую реализацию использовать. Поэтому все создание узлов должно выполняться с использованием заводских методов. Это был дизайнерский выбор, сделанный разработчиками DOM API.

Если вам нужен DOM API, с которым легче жить, попробуйте XOM, JDOM или DOM4J.

+2

Я бы ответил «потому что DOM API плохо разработан ...», но я думаю, что ваш более тщательный. Это один из тех API: s, где они забиты в каждом шаблоне дизайна, их. – Esko

+0

Это довольно ужасно, да, но, к счастью, мы обычно можем использовать одну из альтернатив. – skaffman

+0

Тогда возникает вопрос, почему CreateElement() не является статическим? – maayank

Смежные вопросы