Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建文档对象_Java_Design Patterns_Dom - Fatal编程技术网

Java 创建文档对象

Java 创建文档对象,java,design-patterns,dom,Java,Design Patterns,Dom,以下是创建文档对象的步骤: DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.newDocument(); 我有几个问题: 为什么我们需要DocumentBuilderFactory?有一个DocumentBuilder来创

以下是创建文档对象的步骤:

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
我有几个问题:

  • 为什么我们需要DocumentBuilderFactory?有一个DocumentBuilder来创建文档还不够吗?(假设只有几个构造函数是不够的)

  • 是一种抽象的方法。它叫什么名字

  • 这里使用的设计模式是什么?它们的作用是什么


  • DocumentBuilderFactory
    是一个抽象类。这并不意味着不能调用属于该类的静态方法

    请看一下DocumentBuilderFactory.newInstance()的实际功能

    获取DocumentBuilderFactory的新实例。此静态方法创建一个新的factory实例。此方法使用以下有序查找过程来确定要加载的DocumentBuilderFactory实现类:

  • 使用javax.xml.parsers.DocumentBuilderFactory系统属性
  • 使用JRE目录中的属性文件“lib/jaxp.properties”。此配置文件采用标准java.util.Properties格式,包含实现类的完全限定名,键为上面定义的系统属性。jaxp实现只读取jaxp.properties文件一次,然后缓存其值以供将来使用。如果第一次尝试读取文件时该文件不存在,则不会进一步尝试检查其存在性。在第一次读取jaxp.properties后,不可能更改其中任何属性的值
  • 如果可用,请使用服务API(如JAR规范中所述)来确定类名。服务API将在运行时可用的JAR文件META-INF/Services/javax.xml.parsers.DocumentBuilderFactory中查找类名
  • 平台默认DocumentBuilderFactory实例
  • 一旦应用程序获得对DocumentBuilderFactory的引用,它就可以使用工厂来配置和获取解析器实例

    现在您已经知道工厂如何尝试加载正确的类。newInstance()返回的实例将是DocumentBuilderFactory的一个实现。此实现实现了抽象方法*newDocumentBuilder*,该方法将为给定实现创建文档生成器


    很明显这里使用的是工厂模式。

    谢谢!但是DocumentBuilder的角色是什么?为什么需要两个类来构造文档对象?文档生成器隐藏文档的实现和构造细节。